2011-11-25 31 views
3

如果我將表單發佈到包含ID的目標URL(例如,發佈到控制器,如何從URL獲取ID

/mycontroller/createItemAndAddTo/5 

我怎樣才能在[HttpPost]的ActionResult子程序的ID(=5)(這需要的模型參數)

我想離開了從POST數據/形式Id,並從URL獲得它,因爲它已經存在有

在這種情況下,編號爲外鍵,我通常會包括它作爲一個隱藏字段,但因爲它已經包含

回答

6

似乎沒有必要如果你h AVE標準路由設置,其中有網址的id作爲最後一個記號,然後默認的模型綁定會自動填充它的價值:

[HttpPost] 
public ActionResult Foo(int id) 
{ 
    // id = 5 here 
} 

,或者如果您的視圖模型有一個id屬性:

[HttpPost] 
public ActionResult Foo(MyViewModel model) 
{ 
    // model.Id = 5 here 
} 
+0

它有一個ModelId,但這是主鍵。在這種情況下,它是一個外鍵,如果它只存在於URL中,我怎麼才能找到它? – goorj

+0

@goorj,我不知道你在說什麼主鍵和外鍵。 ASP.NET MVC中沒有這樣的概念。它們僅在您的數據訪問層中相關。在ASP.NET MVC控制器中,動作應始終將視圖模型從/傳遞到視圖。視圖模型是專門爲給定視圖設計的類。因此,在你的情況下,你的控制器動作可以採用一個視圖模型,該模型有一個名爲Id的屬性,以便默認的模型聯編程序完成從URL映射它的工作。然後你會傳遞這個值到你的DAL層,它將決定它是否是主要的,次要的,第三個關鍵... –

+1

好的,如果我理解你的話,如果在(view)模型中有一個名爲「Id」的屬性,那麼即使其他屬性是從POST數據映射的,默認聯編程序將從URL中獲取值? – goorj