加载EditorForModel / DisplayForModel比在TempData中存储指标更好的方法是什么?

时间:2012-11-19 23:32:49

标签: c# asp.net-mvc-3

我有一个想要加载视图的控制器。视图模型有时应处于编辑模式。因此,我有以下代码:

public ActionResult ExistingOrderDetails(int orderID, bool isEditMode)
{
    TempData["isEditMode"] = isEditMode;

    Order order = WorkflowManager.GetOrderByID(orderID);
    OrderDetailsModel orderDetailsModel = new OrderDetailsModel(order);
    return View("OrderDetails", orderDetailsModel);
}

在OrderDetails.ascx中,我有以下内容:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CableSolve.Web.Models.Orders.OrderDetailsModel>" %>

<%
if((bool)TempData["isEditMode"])
{
    %><%=Html.EditorForModel()%><%
}
else
{
    %><%=Html.DisplayForModel()%><%
}
%>

这对我来说似乎有点像黑客。我应该将OrderDetails.ascx分成两个单独的ViewModel,一个EditableOrderDetails.ascx和一个ReadOnlyOrderDetails.ascx吗?好奇。

1 个答案:

答案 0 :(得分:1)

在这种情况下,最好避免使用TempData。我会制作两个单独的视图并写入操作:

return View(isEditMode ? "OrderDetailsEdit" : "OrderDetailsDisplay", orderDetailsModel);