【问题标题】:ASP.NET MVC and passing ID to strongly typed BeginFormASP.NET MVC 并将 ID 传递给强类型 BeginForm
【发布时间】:2013-09-05 04:13:37
【问题描述】:

我在将 id 从 URL 传递到我的控制器操作时遇到一些问题

假设我有这个网址:Bing/Index/4

在我的母版页中,我想生成一个提交给 BingController SearchAction 的表单。我做了这样的事情

using(Html.BeginForm<BingController>(action => action.Search(id)))

如何从 url 获取 id(本例中为 4)以将其传递给 Search 操作?

感谢您的帮助

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-routing html-helper


    【解决方案1】:

    要访问母版页中的数据,您的控制器需要将其添加到 ViewData 以便母版页可以访问它。

    public ActionResults Index(string id)
    {
       ViewData["SearchID"] = id;
    
       return View();
    }
    

    然后在您的母版页中,您可以在 ViewData 中访问它

    using (Html.BeginForm("Search", "Bing", { id = ViewData["SearchID"] })
    

    对于强类型视图,我有一个 BaseModel 类,它具有母版页所需的属性,并且我的所有其他模型都继承了该基类。像这样的...

    public class BaseModel
    {
       prop string SearchID {get;set;}
    }
    
    public class HomeIndexModel : BaseModel
    {
    
    }
    
    public ActionResults Index(string id)
    {
       HomeIndexModel model = new HomeIndexModel();
       model.SearchID = id;
    
       return View(model);
    }
    

    您的母版页如下所示:

    <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<BaseModel>" %>
    
    <% using(Html.BeginForm<BingController>(action => action.Search(Model.SearchID))) { %>
    

    【讨论】:

    • 谢谢,它就像一个魅力。这是否仅适用于 MasterPage 或普通页面?
    • 是的,事实上我想知道是否需要通过页面或部分视图来执行此操作。似乎asp在页面中使用时将ID自动绑定到action参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多