我在将参数从视图传递到弹出窗口时遇到问题。
在我看来,我有以下剃刀代码来渲染动作链接,当我点击它时,会出现一个弹出窗口:
@Html.ActionLink("[Edit Product]", "Edit", "Products", new { ProductCode = @Model.ProductCode}, new { @class = "editLink" })
我不太确定这是否正确或部分new { ProductCode = @Model.ProductCode}
是否有意义(请向我解释这部分的作用,任何人都喜欢)。
无论如何,我的弹出代码接受如下参数:
@model MySuperStore.Models.ViewModel.ProductsModel
每当我尝试通过@Mode.ProductCode
显示ProductCode时,我总是收到错误,指出引用未设置为对象的实例。
我尝试通过MainView将ProductCode放在ViewData
中并在弹出窗口中访问它,但这似乎也不起作用。
有人可以帮帮我吗?谢谢。干杯!
答案 0 :(得分:1)
您的代码看起来不错:
@Html.ActionLink(
"[Edit Product]",
"Edit",
"Products",
new { ProductCode = Model.ProductCode },
new { @class = "editLink" }
)
请确保您输入此代码的视图是强类型的,并且呈现它的控制器操作会将实际模型传递给它。
就Edit
操作而言,您还应确保调用将非空模型传递给视图:
public ActionResult Edit(int productCode)
{
ProductsModel model = ... fetch your model using the productCode
return View(model);
}
现在在Edit.cshtml
视图内(或部分视图,如果您使用jQuery UI对话框或弹出窗口中的某些内容打开此视图),您可以使用模型的属性:< / p>
@model ProductsModel
@Html.DisplayFor(x => x.ProductCode)