在 ASP.NET MVC 中:从 Razor 视图调用控制器操作方法的所有可能方式
Posted
技术标签:
【中文标题】在 ASP.NET MVC 中:从 Razor 视图调用控制器操作方法的所有可能方式【英文标题】:In ASP.NET MVC: All possible ways to call Controller Action Method from a Razor View 【发布时间】:2012-12-12 13:21:15 【问题描述】:我知道这是一个非常基本的问题。
但是你能告诉我所有可能的选项, 从 Razor 视图调用 控制操作方法 [通常是任何服务器端例程] 并且, 每个场景最适合使用。
谢谢。
【问题讨论】:
【参考方案1】:方法一:使用jQuery Ajax Get调用(部分页面更新)。
适用于需要从数据库中检索json数据的时候。
控制器的动作方法
[HttpGet]
public ActionResult Foo(string id)
var person = Something.GetPersonByID(id);
return Json(person, JsonRequestBehavior.AllowGet);
Jquery GET
function getPerson(id)
$.ajax(
url: '@Url.Action("Foo", "SomeController")',
type: 'GET',
dataType: 'json',
// we set cache: false because GET requests are often cached by browsers
// IE is particularly aggressive in that respect
cache: false,
data: id: id ,
success: function(person)
$('#FirstName').val(person.FirstName);
$('#LastName').val(person.LastName);
);
人物类
public class Person
public string FirstName get; set;
public string LastName get; set;
方法二:使用jQuery Ajax Post调用(部分页面更新)。
适用于需要将部分页面发布数据到数据库时。
Post 方法也和上面一样,只是在 Action 方法上替换 [HttpPost]
并为 jquery 方法键入 post
。
更多信息请查看Posting JSON Data to MVC Controllers Here
方法3:作为表单发布场景(整页更新)。
适用于需要将数据保存或更新到数据库中。
查看
@using (html.BeginForm("SaveData","ControllerName", FormMethod.Post))
@Html.TextBoxFor(model => m.Text)
<input type="submit" value="Save" />
动作方法
[HttpPost]
public ActionResult SaveData(FormCollection form)
// Get movie to update
return View();
方法四:作为表单获取场景(整页更新)。
适合需要从数据库中获取数据的时候
Get 方法也和上面一样,只是将 [HttpGet]
替换为 Action 方法,FormMethod.Get
替换为 View 的 form 方法。
希望对你有帮助。
【讨论】:
感谢 Sampath。您能否用示例代码块说明方法 2 和 4。再次感谢! 仔细观察,这4种方法各有不同。如果每个方法都给个代码块会不会太麻烦。 感谢 Sampath。这真的很有帮助。我认为这个想法对你的博客来说是一个很好的补充。再次感谢。干杯! @dan 很高兴听到它有帮助。是的,我一定会考虑在我的博客中添加这种带有更多详细信息的夏季内容。感谢您的想法。请保持联系。 您好,我尝试了方法 1 在 MVC3 中使用 jQuery Ajax Get 调用从控制器获取数据,但 JSON 格式的数据显示在屏幕上,它似乎不会调用 ajax。以上是关于在 ASP.NET MVC 中:从 Razor 视图调用控制器操作方法的所有可能方式的主要内容,如果未能解决你的问题,请参考以下文章
从 Razor View-MVC3 ASP.NET 中的 Web.config 访问键值
ASP.NEt MVC 使用 Web API 返回 Razor 视图