【问题标题】:ASP.NET MVC. No idea how to use Url.action to pass an object to the controllerASP.NET MVC。不知道如何使用 Url.action 将对象传递给控制器
【发布时间】:2010-10-17 21:45:32
【问题描述】:

我是 asp.net MVC 的新手。我能够创建我的视图并显示数据(Gridview)。此外,我能够创建一个超链接(使用 Url.Action)传递字符串和 int 类型。但是,我想创建一个引用更复杂类型的超链接。与我的视图关联的类具有对列表的引用。我想要的是在我的控制器中创建一个额外的 ActionResult 作为参数列表(见下文)

public ActionResult ViewItems(List<Items> c)
{            
    return View(c);
}

我的想法是何时能够将该列表传递给控制器​​,然后控制器将调用相应的视图。我试过了(见下文),但我只是空白。

<asp:HyperLink ID="LinkContractID" runat="server" NavigateUrl='<%#Url.Action("ViewItems", new {c = **((Contract)Container.DataItem).ContractItems.ToList<Items>(**)}) %>'
Text='<%# Eval("ContractId") %>'></asp:HyperLink>

【问题讨论】:

  • 我不知道发生了什么但它没有显示:NavigateUrl='()}) %>'
  • GridView...?这不是 WebForms 控件吗?你不应该在 MVC 中使用它。
  • 查利诺是对的。这个 Eval() 东西也不适用于 MVC。

标签: asp.net asp.net-mvc


【解决方案1】:

与上一个答案一样,您不使用 asp 控件。 Html.ActionLink 有利有弊,但是,如果您想在图像周围放置一个链接,它就不太好了。在这种情况下,语法是

<a href="<%= Url.Action(
   "ShowListPage", "MyController", new { modelId = 101 }) %>">
   <img src="img.gif" />
</a>

此外,通过您在控制器中的操作,理想情况下,您希望执行此操作并让模型传递给对该模型进行强类型化的视图。因此,您有一个模型对象,其构造函数采用 id,例如

public MyModel(int modelId)
{
   this.TheListThatHoldsTheGridData = MyDataLayerProc(modelId);
}

这样您就可以在 MyController 控制器中执行操作,像这样返回视图 ShowListPage(与 MyModel 实例关联)

public ActionResult ShowListPage(int modelId)
{
   return View(new MyModel(modelId));
}

希望这会有所帮助,

标记

【讨论】:

    【解决方案2】:

    使用 MVC,您不应该使用 Gridview 和 asp: 控件。如果要生成链接,只需使用 和必要的参数。

    【讨论】:

      【解决方案3】:

      如果您正在寻找网格,this tutorial 将展示如何使用 MVC 创建网格。

      【讨论】:

        猜你喜欢
        • 2011-10-15
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 2015-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多