繁体   English   中英

如何将值从View传递到Controller Action参数? MVC3

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM