0

我是 MVC 的新手,我有一个相对基本的问题。我通过搜索找到了一些答案,但没有什么能让我觉得我知道这个常见功能的“最佳实践”:

我有强类型视图,并且在“成员”和“宠物”之间存在关系。我想在我的成员编辑视图上创建一个页面来“创建新宠物”。

此时,我想将 MemberId 从 Member 编辑视图传递到 Pet 创建页面,以便它可以启动 Pet 模型的新实例,并关联正确的成员。

我认为最佳做法是从成员编辑视图传递 memberId(但通过什么方法?),然后将此值存储在隐藏的表单字段中,该字段是 Pet 上强类型“memberId”值的正确名称模型。然后,宠物创建控制器应该在创建宠物时自动提取此值。

我需要帮助将 memberId 从 Member 编辑视图传递到 Pet 编辑视图,如果这是完成我想要做的事情的最佳方式,我还需要一般的想法。感谢您的时间和帮助!

4

2 回答 2

1

因此,我所看到的处理此类问题的真正首选方法是使用 MVVM 模式,您可以在其中创建专为视图设计的 ViewModel 对象。虽然这看起来像,但我有很多意见!但这可能是您需要切换到动态视图的时候。但是,如果你不能,这种模式是一个很好的遵循。例如,您需要会员 ID 和我相信的宠物信息?你可以做的是传递一个包含宠物列表的对象,或者类似的东西。然后在视图模型中,您还可以传递成员 ID 列表或成员 ID。我不太清楚申请的重点。但底线是您创建一个特定于该视图的模型,该模型还利用实际模型来传递必要的信息。 http://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx

祝你好运。

于 2013-06-18T19:40:16.193 回答
1

直接的方法是将 memberId 作为路由值传递给 CreatePet Action。

因此,您的 Member View 可能有一个如下所示的 Url 来导航到 CreatePet 操作:

@Url.Action("CreatePet", "PetController", new { memberId = Model.MemberId })

CreatePet 操作将 memberId 作为参数

public ActionResult CreatePet(int memberId)
{
    ...
}

更新

从评论到问题:

我也很好奇我是否可以在“添加宠物”按钮中传递整个成员模型并在宠物控制器中使用它?这可能是更可取的方法

出于多种原因,这听起来不是一个好主意。为什么宠物需要对会员了解这么多?如果客户端欺骗了成员值怎么办——你不应该依赖它们,所以最好只使用作为路由值传递的 id 来查找成员服务器端。

于 2013-06-18T19:48:55.350 回答