2011-10-11 34 views
1

我在我的MVC應用程序如下路線:ASP.net MVC - 傳遞一個ID轉換的局部視圖

/foobars /編輯/ {ID}

的{ID}在這種情況下對應於我的「Foobar」模型的Id。

在我編輯觀點我做了以下內容:

@Html.Partial("~/Views/Notes/CreateNotePartial.cshtml", new CreateNoteViewModel()) 

的CreateNotePartial視圖使用jQuery的對話框,並會使用以下路線後到我NotesController:

/筆記/創建/ {ID }

在這種情況下{id}與我的Foobar ID不是相同的id。我的Foobar模型有另一個名爲UniqueId的屬性。我需要能夠將它傳遞到我的部分視圖中,以便當我創建表單以POST到notes控制器時,它會傳入正確的ID。做這個的最好方式是什麼?

現在我做了以下內容:

// Foobar Edit View 
@Html.Partial("~/Views/Notes/CreateNotePartial.cshtml", new CreateNoteViewModel(Model.UniqueId)) 

// Create Note Partial 
@model CreateNoteModel 

@using(Html.BeginForm("Create", "Notes", FormMethod.Post, new { id = Model.UniqueId })) { 
} 

有沒有更好的方式來傳遞這個到我的局部視圖或這是做的最好的方法是什麼?

回答

0

似乎最好的方式對我做 - 我認爲你唯一的選擇是通過它在ViewData,每個人都會告訴你,不建議由於強打字,魔術字符串等原因。

當然,這是我做的方式(當然不是我是世界上最偉大的權威)。

0

從它看起來像,你設置表單id到model.UniqeId。這只是將表單的html元素設置爲id的任何模型。我不會推薦這麼做。

使用TempData沒有什麼問題(與ViewData不一樣)。 TempData用於將一個視圖的值傳遞給另一個視圖,然後一旦訪問它,它就會消失。有關更多信息,請參見this post

相關問題