【发布时间】:2017-01-10 12:42:03
【问题描述】:
我有以下操作方法:
[HttpGet]
public ActionResult DBLookupIndex(DBLookupDTO dto)
{
dto.Areas = _ph.GetProfiles();
return View(dto);
}
[HttpGet]
public ActionResult Search(DBLookupDTO dto)
{
dto.Orders = _oh.GetOrders(dto.OrderNumber, dto.ProductNumber, dto.DateRange, dto.SelectDeleted, dto.AreaId);
return RedirectToAction("DBLookupIndex", dto);
}
用户只需在网页上的一个或多个文本框中输入有效信息,然后按提交将其提交给控制器。然后这会调用 Search 操作。 通过调试,我确定该功能有效。它确实找到了它应该找到的东西,但是当它重定向回 DBLookupIndex-action 时,它没有被传递。
我的问题是;我做错了什么?我已经看到与上述类似的代码示例作为类似问题的解决方案,但由于某种原因它对我不起作用。
编辑:
在收到第一个答案后,我意识到我遗漏了一些信息。每当加载页面时,它都必须更新在视图中呈现的下拉列表,以防添加了新的配置文件/区域。我用剃须刀做到这一点:
<select name="AreaId" asp-for="AreaId" class="form-control">
<option disabled selected value=""> -- Vælg et område -- </option>
@foreach (var a in Model.Areas)
{
<option value="@a.ProfileId">@a.Name</option>
}
这就是为什么我必须使用 RedirectToAction,而不是让一个新动作呈现相同的视图。除非有更好的方法吗? :)
提前感谢您的帮助!
【问题讨论】: