mvc 从视图传递到Controller 多个不同的实体类接收如何做呢?

如图后台是这样的前台怎么用ajax怎么构造才能让后台接收呢。是不同的实体类。还望高手解答... 如图后台是这样的
前台怎么用ajax 怎么构造才能让后台接收呢。
是不同的实体类。还望高手解答
展开
 我来答
lass9999
推荐于2018-02-27 · 超过31用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:45.6万
展开全部

定义的两个类Person和Schoole(注意这两个类中都有Name属性)

然后是ajax的写法,因为MVC数据绑定是根据属性name进行匹配的,

所以在ajax的data中,需要定义一个包含上边两个class的所有属性的对象,这里需要注意,后台的两个类最好不要有同名的属性,如果有同名的属性,但需要的是不同值,前台这块就不能处理了(上边的两个类都有Name属性,所以都controller中时,都被绑定为”Deep“了)

再看到controller中,两个类都被初始化成功了。

csd314
2014-10-24 · TA获得超过493个赞
知道小有建树答主
回答量:730
采纳率:50%
帮助的人:550万
展开全部

做MVC的话一般不推荐这种写法,过于复杂,不过技术上还是能实现的,利用BindAttribute

public class ClassA
{
    public string Name { get; set; }
    public int ID { get; set; }
}
public class ClassB
{
    public string Title { get; set; }
    public int ID { get; set; }
}
public ActionResult ManyModel([Bind(Prefix = "A")]ClassA a, [Bind(Prefix = "B")]ClassB b){
    return View();
}

然后是Ajax

jQuery.ajax(
    {
        url: "/home/ManyModel",            
        data: { "A.Name": "Tom", "A.ID": 1, "B.Title": "Developer", "B.ID": 2 },
        type: "POST"
    });

主要就是利用BindAttribute的Prefix设置绑定规则,这里就是A开头的绑定到a,B开头的绑定到b,实际写的时候是带点的,后面跟Model的属性名

当然还可以使用BindAttribute的Include和Exclude来进行区分

如果不是Ajax而是直接表单提交,注意表单控件的name保持上述规则即可

参考:

http://msdn.microsoft.com/zh-cn/library/system.web.mvc.bindattribute.aspx

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式