1

ビューをロードしたいコントローラーがあります。ビューのモデルは、場合によっては編集モードにする必要があります。そのため、次のコードを取得しました。

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 を、EditableOrderDetails.ascx と ReadOnlyOrderDetails.ascx の 2 つの個別の ViewModel に分割する必要がありますか? ちょっと興味があるんだけど。

4

1 に答える 1

1

TempDataこの場合は避けた方が無難かもしれません。2 つの別個のビューを作成し、アクションに次のように記述します。

return View(isEditMode ? "OrderDetailsEdit" : "OrderDetailsDisplay", orderDetailsModel);
于 2012-11-19T23:37:55.253 に答える