Chr*_*xon 2 .net c# asp.net-mvc
在我开始捏造自己的方法之前,我正在把头发拉过这一头而且我正在寻找指导.
这是我得到的:
查看片段
<td>@Html.ActionLink("More Details", "Index", new { id = product.ProductId })</td>
<td>@Html.ActionLink("Compare", "Compare", new { id = product.ProductId, compare = true })</td>
Run Code Online (Sandbox Code Playgroud)
控制器片段
public ActionResult Index(FormCollection values)
{
// Does stuff, works
}
public ActionResult Index(int productId)
{
// Does stuff, works
}
Run Code Online (Sandbox Code Playgroud)
现在,这就是我的问题.现在,从POST到表单,以及单击"更多详细信息"ActionLink,都会使用索引函数.这很好用.
现在我希望"比较"功能正常,我希望在同一页面上保存一份比较产品列表,这很好.但是如何在同一个视图/页面上获得比较功能?
我试过了:
public ActionResult Compare(int productId)
{
}
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用,因为它需要一个Compare.cshtml,我不想发生.我希望它能够修改我的ViewModel并使用新的Compare产品返回它,所以我可以从我原来的View中做到这一点:
@foreach(var products in Model.ComparedProducts)
Run Code Online (Sandbox Code Playgroud)
我能看到我这样做的唯一方法就是"捏造它":
public ActionResult Index(int productId = 0, bool compare)
{
}
Run Code Online (Sandbox Code Playgroud)
在同一页面上有很多功能可能会变得难以驾驭.
当然有一些明显我在这里失踪的东西?
Oh, and the AjaxLink options isn't right for me, as this is part of the site that has to work via postbacks (Progress Enhancement and all that jazz).
我想你通过调用返回一个ActionResult return View(model),是吗?在没有显式命名视图的情况下,MVC解析机制会查找与操作同名的视图,在您的"Compare.cshtml"中.
如果您更改了对您的呼叫,return View("Index", model)则无论操作名称如何,都将使用Index.cshtml视图.
那是你在找什么?
MVC中的操作不需要相应的视图.它可以通过向View()函数提供name参数来返回任何视图- 请参阅http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.view%28v=vs.98%29.aspx详情.
您可以在比较函数中执行所需的所有逻辑,并重定向回索引操作或根据需要使用显示页面的任何其他操作RedirectToAction().
| 归档时间: |
|
| 查看次数: |
3953 次 |
| 最近记录: |