ASP.net MVC - 将Id传递到局部视图

时间:2011-10-11 20:05:40

标签: c# asp.net-mvc

我的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 }) ) {
}

有没有更好的方法将其传递给我的部分视图,或者这是最好的方法吗?

2 个答案:

答案 0 :(得分:0)

似乎是对我这样做的最佳方式 - 我认为你唯一的另一个选择是将其传递给ViewData,由于强类型,魔术字符串等等原因,每个人都会告诉你不建议这样做。

当然,这就是我这样做的方式(并不是说我当然是世界上最强大的权威)。

答案 1 :(得分:0)

从它看起来,你将表单id设置为model.UniqeId。这只是将表单的html元素设置为模型ID。我不建议这样做。

使用TempData没有任何问题(与ViewData不同)。 TempData用于将值从一个视图传递到另一个视图,然后一旦访问它就会消失。有关详情,请参阅this post