ASP.NET MVC并将ID传递给强类型的BeginForm

时间:2010-02-03 14:26:26

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

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

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

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

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

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

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

要在母版页中访问该数据,您的控制器需要将其添加到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))) { %>