Asp.net mvc ASP.NET MVC 3-将参数从视图传递到控制器

Asp.net mvc ASP.NET MVC 3-将参数从视图传递到控制器,asp.net-mvc,binding,view,model,model-binding,Asp.net Mvc,Binding,View,Model,Model Binding,如果将匿名对象传递回控制器,它将通过查看匿名对象属性名称来填充控制器参数-那么我如何将相关对象的属性传递回模型,以便默认值绑定器可以绑定它们 例如: 型号: public class MyViewModel { public MyItem MyItem { get; set; } } public class MyItem { public string Name { get; set; } } 控制器: public ActionResult Index(MyViewMod

如果将匿名对象传递回控制器,它将通过查看匿名对象属性名称来填充控制器参数-那么我如何将相关对象的属性传递回模型,以便默认值绑定器可以绑定它们

例如:

型号:

public class MyViewModel
{
    public MyItem MyItem { get; set; }
}

public class MyItem
{
    public string Name { get; set; }
}
控制器:

public ActionResult Index(MyViewModel model)
{
    return View(model);
}
在视图中,我想传回MyItem.Name,这怎么可能?我试过:

@Html.ActionLinke("Index", "MyController", new { name = "example" })


救命啊

您可以使用以下重载:

@Html.ActionLink( 
    "link text",                             // linkText
    "Index",                                 // actionName
    "MyController",                          // controllerName
    new RouteValueDictionary {               // routeData
        { "MyItem.Name", "example" } 
    }, 
    null                                     // htmlAttributes
)

您可以使用以下重载:

@Html.ActionLink( 
    "link text",                             // linkText
    "Index",                                 // actionName
    "MyController",                          // controllerName
    new RouteValueDictionary {               // routeData
        { "MyItem.Name", "example" } 
    }, 
    null                                     // htmlAttributes
)
您是否尝试过:

@Html.ActionLink("Index", "MyController", new { name = @Model.MyItem.Name })
在行动方法中:

public ActionResult Index(string name)
{
    return View();
}
您是否尝试过:

@Html.ActionLink("Index", "MyController", new { name = @Model.MyItem.Name })
在行动方法中:

public ActionResult Index(string name)
{
    return View();
}

我认为您可能误解了“对象从视图传递到控制器”。 并不是传递对象,而是在页面中呈现链接锚标记。当用户单击链接时,请求实际上来自浏览器。没有正在进行的“服务器端对象传递”

该链接必须包含控制器中服务器端所需的所有参数,作为查询字符串参数

我认为你真正想做的是:

提交表格并提交,或

例如,只传递所需数据的id,并在控制器中从DB检索数据


我认为您可能误解了“对象从视图传递到控制器”。 并不是传递对象,而是在页面中呈现链接锚标记。当用户单击链接时,请求实际上来自浏览器。没有正在进行的“服务器端对象传递”

该链接必须包含控制器中服务器端所需的所有参数,作为查询字符串参数

我认为你真正想做的是:

提交表格并提交,或

例如,只传递所需数据的id,并在控制器中从DB检索数据


答案是创建一个自定义ModelBinder和ModelBinderProvider。

答案是创建一个自定义ModelBinder和ModelBinderProvider。

我知道我可以这样做,但我认为默认的ModelBinder可以处理继承,所以我所需要的作为参数的是我的视图模型对象。我知道我可以这样做,但我我认为默认的模型绑定器可以处理继承,所以我所需要的参数就是我的视图模型对象。