将模型的附加参数传递给视图
本文关键字:参数传递 视图 模型 | 更新日期: 2023-09-27 18:05:47
还在学习Mvc所以抱歉,如果这个问题有点奇怪。我在我的控制器方法中传递模型,并希望传递一个额外的参数。
我想要实现的是类似这样的东西,但是参数重载不允许'附加'参数。
@using (Html.BeginForm("SubmitCall", "Home", new { Id = Model.ProductDetail.ProductId }))
然后在控制器
public ActionResult SubmitCall(ViewModel model, int Id)
{
return RedirectToAction("DetailViewById", model, new {productId = Id});//not allowed
}
是否有更好的方法来实现这一点?
亲切问候
如果您唯一的目的是将客户端重定向到另一个URL,那么上述场景不是实现此目的的正确方法。
RedirectToAction将发送一个HTTP 302,其中包含从您的路由信息生成的位置信息(再次,在您的情况下,这将是URL到DetailViewById与productId作为URL的参数或一部分-取决于您的路由配置)。
如果你需要持久的ViewModel,这是由客户端提交的,一旦用户请求你的重定向操作,然后我建议使用TempData,这是专为这种数据的请求之间的持久性。
通常,ViewModel是您从数据库(DTO)返回的内容+您需要从视图和从视图返回的额外比特和片段的组合。
所以在我看来,你应该添加这个额外的属性到你的Viewmodel
为参数创建一个匿名对象:
return RedirectToAction("DetailViewById",
new {
productId = Id,
model.Property1,
model.Property2,
...
});