我的MVC应用程序中有以下路径:
/ foobars /编辑/ {ID}
在这种情况下,{id}对应于我的“Foobar”模型的ID。
在我的编辑视图中,我正在执行以下操作:
@Html.Partial("~/Views/Notes/CreateNotePartial.cshtml", new CreateNoteViewModel())
CreateNotePartial视图使用jQuery对话框,并使用以下路径POST到我的NotesController:
/笔记/创建/ {ID}
在这种情况下,{id}与我的Foobar 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 :(得分:0)
似乎是对我这样做的最佳方式 - 我认为你唯一的另一个选择是将其传递给ViewData
,由于强类型,魔术字符串等等原因,每个人都会告诉你不建议这样做。
当然,这就是我这样做的方式(并不是说我当然是世界上最强大的权威)。
答案 1 :(得分:0)
从它看起来,你将表单id设置为model.UniqeId。这只是将表单的html元素设置为模型ID。我不建议这样做。
使用TempData没有任何问题(与ViewData不同)。 TempData用于将值从一个视图传递到另一个视图,然后一旦访问它就会消失。有关详情,请参阅this post。