MVC3:如何发布包含部分视图的表单?

时间:2011-04-12 19:53:25

标签: asp.net-mvc-3 post razor jquery-validate partial-views

工具:MVC3,jQuery Unobtrusive Validation,Razor,VS 2010

我正在开发一个MVC2项目,使用户可以请求服务。我在部分视图中放置了所有表单的共同信息,这些信息是对自己的模型强类型的。每个局部视图都有自己的控制器。部分视图在主容器页面中呈现。我对渲染页面上的所有数据都进行了不显眼的jQuery数据验证。

问题:对将所有页面数据中继到服务器的帖子进行编码的最佳方法是什么?如何将部分视图与各自的模型相关联?部分视图的控制器是否可以处理自己的数据存储杂务?某处有什么好的例子吗?或者,这种架构是否存在缺陷,我应该重新考虑一下?

提前致谢,

阿诺德

1 个答案:

答案 0 :(得分:1)

不,完全没有,听起来很好,很容易测试。首先,确保使用HTML中的正确操作,方法等正确设置表单。那么发布整个页面就可以做到这样的事情:

var savePage = function () {
    $('form').each(function (formIndex, formElement) {
        var f = $(formElement);
        $.post(f.attr('action'), f.serialize(), successfulFormPost);
    });
};

var successfulFormPost = function (data) { ... };

现在,如果您的MVC视图看起来像这样:

         

(注意name属性的命名约定)。然后,您可以使该表单的控制器采用与视图的@Model匹配的强类型参数:

public class SomeModel {
    public int Id { get; set; }
    public string Description { get; set; }
}

public class SomeController : Controller {
    [HttpPost]
    public ActionResult SomeAction(SomeModel someModel) {
        // use someModel.Id, someModel.Description here
    }
}

我手动做了一些HTML,但我只是证明了绑定和链接HTML POST与控制器操作的关键点。我将通过使用Html.TextBox类型语法让您接受不引人注目的验证。只需记住根据默认活页夹的工作方式设置输入字段的名称属性:

http://www.asp.net/mvc

这是所有这些基本原则的重要来源。