【发布时间】:2019-09-30 14:18:26
【问题描述】:
我想使用相同的视图来创建和显示相同的对象。 如果页面由 get 方法调用,它会显示一个用于编辑对象的表单。 如果页面是通过 post 方法调用的,它会显示对象的值。
我已经通过使用 2 个不同的视图来完成它。 并尝试使用模型状态。
我想要类似的东西
@if(Method =="GET"){
// form for edit.
}
else{
// show data.
}
我试过了
@if (ViewData.ModelState.IsValid)//this is always true
{
@using (Html.BeginForm(FormMethod.Post))
{
@Html.TextBoxFor(m => m.ProductID);
@Html.TextBoxFor(m => m.ProductName);
@Html.TextBoxFor(m => m.ProductDescription);
@Html.TextBoxFor(m => m.ProductPrice);
<input type="submit" value="registra"/>
}
}
else
{
<p>@Model.ProductID</p>
<p>@Model.ProductName</p>
<p>@Model.ProductDescription</p>
<p>@Model.ProductPrice</p>
}
如果在控制器中我使用 2 个不同的视图,它工作得很好,但我不能使用相同的视图,因为
【问题讨论】:
-
我已经使用 ViewBag 让它工作了。在操作方法中,我刚刚添加了 ViewBag.Method="GET";或 ViewBag.Method="POST"。在我刚刚制作的视图中 @if(ViewBag.Method=="GET"){...}
-
为什么只需要一个视图?视图应该尽可能地没有逻辑。将整个视图分支到两种不同的可能性是没有意义的。如果有一些 HTML 或内容需要在两个不同的视图之间共享,则将共享的内容分解为部分内容,并在两者中引用该部分内容。
标签: asp.net-mvc razor asp.net-core-mvc razor-pages