【问题标题】:In ASP.NET MVC: All possible ways to call Controller Action Method from a Razor View在 ASP.NET MVC 中:从 Razor 视图调用控制器操作方法的所有可能方式
【发布时间】:2012-12-12 13:21:15
【问题描述】:

我知道这是一个非常基本的问题。

但是你能告诉我所有可能的选项
从 Razor 视图调用 控制操作方法 [通常是任何服务器端例程] 并且,
每个场景最适合使用。

谢谢。

【问题讨论】:

    标签: javascript jquery ajax asp.net-mvc 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。
    猜你喜欢
    • 1970-01-01
    • 2020-12-28
    • 2019-08-07
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    相关资源
    最近更新 更多