2010-02-03 54 views
2

我从URL传递一个ID进入我的控制器操作的一些问题ASP.NET MVC和通过ID,以强类型BeginForm

可以说我有这个网址:Bing /索引/ 4

在我母版页我想生成提交给BingController SearchAction的表单。我的确从URL像这样

​​

(本例中4)如何获得ID将它传递给搜索行动?

感谢您的帮助

回答

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))) { %> 
+0

谢谢,它的工作原理就像一个魅力。这只是对于MasterPage或普通页面而言是否有价值? – 2010-02-03 14:40:58

+0

它将适用于每个页面以及部分视图。 – 2010-02-03 14:43:02

+0

是的,事实上,我想知道是否需要这样做也与页面或部分视图。当它在页面中使用时,似乎asp会将ID自动绑定到action参数。 – 2010-02-03 14:49:12