代码之家  ›  专栏  ›  技术社区  ›  Mathias F

使用html.begininform发布到当前控制器

  •  6
  • Mathias F  · 技术社区  · 15 年前

    我有一个部分在几个视图中使用。 部分包含窗体。提交表单时的操作完全相同,但包含该操作的控制器取决于视图。

    假设我有一个控制器,每个控制器都有一个动作动作负责人:

    消防人员控制器

    雇佣员工控制者

    我有一部分

    个人列表

    表单呈现为

    html.begininform(“firestafcontroller”, “活动负责人”)或

    html.begininform(“雇用员工控制者”, “活动负责人”)

    消除控制器参数的好方法是什么?现在我将当前控制器的名称传递到模型中并使用

    html.begininform(model.currentcontroller, “活动负责人”)

    但这有点尴尬。

    3 回复  |  直到 8 年前
        1
  •  8
  •   Mark Dickinson    15 年前

    此代码将始终提供当前控制器

    <%=( Url.RequestContext.RouteData.GetRequiredString("Controller")) %>
    

    显然,您可以在不使用<%=的情况下使用它

    Html.BeginForm(
      Url.RequestContext.RouteData.GetRequiredString("Controller")) , 
      "ActOnChoosenPerson") 
    

    它看起来更笨重,但您的模型不需要知道什么是控制器调用它。

        2
  •  6
  •   Alexander Prokofyev    13 年前

    ViewContext RouteData 属性包含当前控制器和操作的名称。你可以这样使用它们:

    Html.BeginForm("ActOnChoosenPerson", ViewContext.RouteData.
        GetRequiredString("controller"))
    
        3
  •  0
  •   user1751825    8 年前

    要做到这一点,最简单的方法就是简单地调用不带参数的begininform()。