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:
<%@ 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? Just curious.
Probably best to avoid
TempDatain this case. I’d make two separate views and write in the action: