Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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# 使用Html.Action将参数传递给局部视图_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 使用Html.Action将参数传递给局部视图

C# 使用Html.Action将参数传递给局部视图,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我正在开发一个MVC应用程序(razor语法),在将参数传递到我的Html.Action调用时遇到问题。下面是我正在实现的搜索页面。注意,模型包含要在下拉列表中使用的不同值 从视图中调用: @using(Html.BeginForm("Search", "Home", FormMethod.Get, null)){ @Html.LabelFor(model => model.siteCode) @Html.DropDownListFor(model => model.siteCod

我正在开发一个MVC应用程序(razor语法),在将参数传递到我的
Html.Action
调用时遇到问题。下面是我正在实现的搜索页面。注意,模型包含要在下拉列表中使用的不同值

从视图中调用:

@using(Html.BeginForm("Search", "Home", FormMethod.Get, null)){

@Html.LabelFor(model => model.siteCode)
@Html.DropDownListFor(model => model.siteCode, new SelectList(Model.siteCode), "All")

@Html.LabelFor(model => model.group)
@Html.DropDownListFor(model => model.group, new SelectList(Model.group), "All")
}

@Html.Action("ShowOrderData", "Home", new {siteCode = Model.siteCode, group = Model.group}
控制器中的操作:

public ActionResult ShowOrderData(string siteCode = "",
                                        string group = "",)
{
        var model = _db.ToolOrders
            .Where(r => r.SiteCD_LOC.Contains(siteCode))
            .Where(r => r.GroupCode.Contains(group))

return PartialView("_OrderData", model);
}
注意:可能有一些语法错误。传递的参数大约还有10个,我不想阻塞代码块

因此,当使用此代码进行调试时,空字符串将发送到我的ShowOrderData控制器。我试图在Html.Action调用(
Model.siteCode.ToString()
)中添加.ToString,此时将显示一个LINQ语句。我猜这种方法是错误的,因为模型不包含来自上一个请求的任何信息

如何正确地将数据从查询字符串发送到局部视图?我见过通过request.queryString直接访问queryString的方法,但我也听说在视图中使用它是不好的做法

谢谢

使用:

  @Html.RouteLink()

您不能将参数传递给部分视图操作而不是操作吗?这可能只是您的问题中的一个输入错误,但您说过空字符串会发送到ShowOrderData控制器,但您的标记会调用主控制器上的ShowOrderData操作。对吗?不管怎样,看起来你已经很好地连接好了(除了那个打字错误)。调用ShowOrderData操作时,是否确定Model.group和Model.siteCode具有值?您的输入错误假设是正确的。我意识到我正在使用的模型只包含在下拉筛选框中使用的不同值,而不是来自QueryString(来自先前请求的筛选选项)的值。我已经使用Request.QueryString[“columnName”]实现了一个临时修复程序。我已经了解到这是一种不好的做法,因此我希望学习正确的方法。Via MSDN:返回包含指定操作的虚拟路径的锚元素(元素)。我需要在这里呈现局部视图,而不是指向它的链接。我认为RouteLink不会这样做。如果我错了,请纠正我。。