我有一个MVC应用程序,其SharedLayout视图(母版页)为用户提供了搜索功能。他们可以通过订单号或按号码搜索他们的订单。因此共享视图和文本框有两个选项按钮。代码有点像这样
@using (Html.BeginForm("Track", "Tracking", FormMethod.Post))
{
<div style="text-align: center">
<textarea cols="20" id="txtNo" name="txtOrderNo" rows="2" ></textarea>
</div>
<div style="text-align: center">
<input type="radio" name="optOrderNo" checked="checked" value="tracking" />Order No <input type="radio" name="optRefNo" value="tracking" />Ref No
</div>
<div style="text-align: center">
<input type="submit" value="Track" />
</div>
}
因此它将转到TrackingController和Track Method并返回视图。它适用于单个搜索,因为View与控制器的方法相关联。它工作正常,但我怎么能有条件地返回基于单选按钮选择的其他视图。
我想出的是这个
[HttpPost]
public ActionResult Track(FormCollection form)
{
string refNo = null;
if (form["optRefNo"] == null)
{
string OrderNo = form["txtOrderNo"];
var manager = new TrackingManager();
var a = manager.ConsignmentTracking(OrderNo);
var model = new TrackingModel();
if (OrderNo != null)
model.SetModelForConsNo(a, consNo);
return View(model);
}
refNo = form["txtConsNo"];
return TrackByRef(refNo);
}
public ActionResult TrackByRef(string refNo)
{
//what ever i want to do with reference no
return View();
}
请指导。 感谢
答案 0 :(得分:16)
View
有一个重载,第一个参数是一个字符串。这是您要使用的视图的名称(或路径),而不是默认值(这是与操作名称匹配的视图)。
public ActionResult TrackByRef(string refNo)
{
//what ever i want to do with reference no
return View("Track");
// or, if you want to supply a model to Track:
// return View("Track", myModel);
}