![](/img/trans.png)
[英]How to pass an object from a mvc controller action to a view using jquery
[英]How to pass values from View to a Controller Action parameter? MVC3
我很抱歉最近问了一些问题。 但是感谢所有帮助。 实际上,我需要使用MVC3 Razor将数据从View传递到Controller。
这是查看代码:
Html.RenderAction("Checks", Model.GetRoleNames);
这是控制器代码:
public ActionResult Checks(string[] getRoleNames)
{
// The parameter is NULL which should NOT be!
//ViewBag.Name = name;
//return View(values);
return View();
}
这是部分查看代码:
@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.GetRoleNames在视图内具有值。 但是不会将任何值作为参数传递给Controller Action! 我不知道可能的原因。
谁能帮我吗?
此方法期望路由参数的形式略有不同:
Html.RenderAction("Checks", new {getRoleNames = Model.GetRoleNames});
更新。 至于为什么应该以这种形式提供参数,可以参考MSDN的描述:
routeValues
包含路由参数的对象。 您可以使用routeValues提供绑定到操作方法参数的参数。 routeValues参数与原始路由值合并并覆盖它们。
这里唯一要添加的是该对象如何精确地绑定到输入参数。 默认模型绑定程序解析输入对象,并尝试查找对象的字段和Action的输入参数名称之间的对应关系。 因此,在上述情况下, Action
具有一个名为getRoleNames
参数,而这正是模型绑定程序正在寻找的名称。 显然,对象Model.GetRoleNames
不包含此类字段/属性,而new {getRoleNames = Model.GetRoleNames}
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.