C# 如何将值从视图传递到控制器动作参数?MVC3
如果这些天我问了一些问题,我很抱歉。但是感谢所有的帮助。实际上,我需要使用MVC3 Razor将数据从视图传递到控制器 以下是查看代码:C# 如何将值从视图传递到控制器动作参数?MVC3,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,如果这些天我问了一些问题,我很抱歉。但是感谢所有的帮助。实际上,我需要使用MVC3 Razor将数据从视图传递到控制器 以下是查看代码: Html.RenderAction("Checks", Model.GetRoleNames); @model string[] @{ for (int i = 0; i < Model.Length; i++) { <input id="@ViewBag.Name@(i)" name="@ViewBag.Name" type="checkbox
Html.RenderAction("Checks", Model.GetRoleNames);
@model string[]
@{
for (int i = 0; i < Model.Length; i++)
{
<input id="@ViewBag.Name@(i)" name="@ViewBag.Name" type="checkbox" value="@(Model[i])" />
<label for="@ViewBag.Name@(i)">@Model.[i]</label>
<br />
}
以下是控制器代码:
public ActionResult Checks(string[] getRoleNames)
{
// The parameter is NULL which should NOT be!
//ViewBag.Name = name;
//return View(values);
return View();
}
以下是部分视图代码:
Html.RenderAction("Checks", Model.GetRoleNames);
@model string[]
@{
for (int i = 0; i < Model.Length; i++)
{
<input id="@ViewBag.Name@(i)" name="@ViewBag.Name" type="checkbox" value="@(Model[i])" />
<label for="@ViewBag.Name@(i)">@Model.[i]</label>
<br />
}
@model string[]
@{
对于(int i=0;i
}
}
问题:Model.GetRoleNames在视图中有值,因为我尝试逐行跟踪。但没有值作为参数传递给控制器操作!我不知道可能的原因
有人能帮我吗?此方法要求路线参数的形式略有不同:
Html.RenderAction("Checks", new {getRoleNames = Model.GetRoleNames});
更新。关于为什么应以这种形式提供参数,可以参考以下说明:
路线价值
包含管线参数的对象。你
可以使用RouteValue提供绑定到
动作方法参数。routeValues参数与
原始管线值并替代它们
这里要添加的唯一内容是如何将此对象绑定到输入参数。默认模型绑定器解析输入对象,并尝试查找对象字段和操作输入参数名称之间的对应关系。因此,在上面的案例中,
Action
有一个名为getRoleNames
的参数,这就是model binder要查找的名称。显然,objectModel.GetRoleNames
不包含这样的字段/属性,而new{GetRoleNames=Model.GetRoleNames}
包含这样的字段/属性。检查一下非常棒的路线图!你刚才给了我宝贵的帮助!但请你解释一下你的答案好吗?虽然效果不错,但我并不完全了解这个问题。我明确的意思是;第二个参数是关于什么的?是什么导致了任务的完成?@user2394196,我用一些解释更新了答案。一切都清楚了吗?你做的修改让我明白了概念。我不知道这里的“模型装订工”工作。希望我能在其他时间帮你,就像你帮我一样;)谢谢