[英]Better way to load EditorForModel/DisplayForModel than storing indicator in TempData?
I have a controller which wants to load a view. 我有一个想要加载视图的控制器。 The view's model should, sometimes, be in edit mode.
视图的模型有时应处于编辑模式。 As such, I've got the following code:
因此,我有以下代码:
public ActionResult ExistingOrderDetails(int orderID, bool isEditMode)
{
TempData["isEditMode"] = isEditMode;
Order order = WorkflowManager.GetOrderByID(orderID);
OrderDetailsModel orderDetailsModel = new OrderDetailsModel(order);
return View("OrderDetails", orderDetailsModel);
}
in OrderDetails.ascx, I have the following: 在OrderDetails.ascx中,我具有以下内容:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CableSolve.Web.Models.Orders.OrderDetailsModel>" %>
<%
if((bool)TempData["isEditMode"])
{
%><%=Html.EditorForModel()%><%
}
else
{
%><%=Html.DisplayForModel()%><%
}
%>
This seems like a bit of a hack to me. 对我来说,这似乎有点破烂。 Should I be splitting my OrderDetails.ascx into two seperate ViewModels, an EditableOrderDetails.ascx and a ReadOnlyOrderDetails.ascx?
我是否应该将OrderDetails.ascx拆分为两个单独的ViewModel,即EditableOrderDetails.ascx和ReadOnlyOrderDetails.ascx? Just curious.
只是好奇。
Probably best to avoid TempData
in this case. 在这种情况下,最好避免使用
TempData
。 I'd make two separate views and write in the action: 我将创建两个单独的视图并编写操作:
return View(isEditMode ? "OrderDetailsEdit" : "OrderDetailsDisplay", orderDetailsModel);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.