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

时间:2012-11-07 18:15:12

标签: 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.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语句将显示出来。我猜这个方法是错误的,因为该模型不包含来自先前请求的任何信息。

如何将QueryString中的数据正确发送到局部视图?我已经看到通过request.querystring直接访问queryString的方法,但我也听说在视图中使用它是不好的做法。

由于

1 个答案:

答案 0 :(得分:0)

使用:

  @Html.RouteLink()

而非行动