Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将值从视图传递到控制器动作参数?MVC3_C#_Asp.net Mvc 3 - Fatal编程技术网

C# 如何将值从视图传递到控制器动作参数?MVC3

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

如果这些天我问了一些问题,我很抱歉。但是感谢所有的帮助。实际上,我需要使用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" 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要查找的名称。显然,object
Model.GetRoleNames
不包含这样的字段/属性,而
new{GetRoleNames=Model.GetRoleNames}
包含这样的字段/属性。

检查一下非常棒的路线图!你刚才给了我宝贵的帮助!但请你解释一下你的答案好吗?虽然效果不错,但我并不完全了解这个问题。我明确的意思是;第二个参数是关于什么的?是什么导致了任务的完成?@user2394196,我用一些解释更新了答案。一切都清楚了吗?你做的修改让我明白了概念。我不知道这里的“模型装订工”工作。希望我能在其他时间帮你,就像你帮我一样;)谢谢