简体   繁体   English

比将指示器存储在TempData中更好的加载EditorForModel / DisplayForModel的方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM