在 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 Razor

ASP.NEt MVC 使用 Web API 返回 Razor 视图

ASP.NET MVC Razor 无编码渲染

尝试从 ASP.NET Core MVC Razor 中的 _Layout 页面重定向时出错

ASP.NET Core Razor 页面与完整 MVC Core [关闭]