簡體   English   中英

MVC將數據從模型傳遞到視圖

[英]MVC passing data from model to view

實際上,我有一個控制器操作,它從模型中的函數獲取變量“結果”的值。 動作如下。

if (model.buildingID == 0)
{
    var result = objAddBuildingBusinessModel.AddBuilding(model, connectionstring,isUnique);                       
}
else
{
    var result = objAddBuildingBusinessModel.UpdateBuilding(model, connectionstring);
}

因此,現在基於變量“結果”的值,如果變量“結果”的值為false,則必須在視圖中顯示錯誤消息。 我應該在哪里顯示它以及應該如何顯示。 請幫助我,因為我是MVC的新手

結果輸出存儲在viewbag中,並在視圖側檢查viewbag值並顯示錯誤消息:

注意: ViewBag將保存您的變量以用於單個視圖請求

控制器:

ViewBag.Result=result;

視圖:

@if(ViewBag.Result)
{
    //Eroor Message HTML
}

jQuery / Javascript:

$(document).ready(function () {
    if (String('@ViewBag.Result').toUpperCase() == "TRUE")
    {
        alert('Error Message');
    }
});

我認為,您可以創建一個模型來保留相同的信息,然后發送數據以查看任何傳輸方法並顯示Exception。

枚舉類

創建類EnumDefinitions。 您可以在此類內使用所有枚舉。 將所有枚舉寫入名稱空間。 您可以訪問此OperationEnum.FAILOperationEnum.SUCCESS

    [Obsolete("Dont Use", true)]
    internal static class EnumDefinitions
    {
       // dont use this.
    }


    /// <summary>
    /// Operation Enums
    /// </summary>
    public enum OperationEnum
    {
        FAIL = 0,
        SUCCESS = 1,
    }

建立模型

public class OperationResult
{
    /// <summary>
    /// Operation fail code
    /// </summary>
    public static string FAIL = "0";

    /// <summary>
    /// Operation success code
    /// </summary>
    public static string SUCCESS = "1";

    /// <summary>
    /// 1 : Success
    /// 0 : Fail 
    /// Maybe you can use Enum to set ResultCode.
    /// </summary>        
    public string ResultCode { get; set; }

    /// <summary>
    /// Exception message
    /// </summary>         
    public string ResultMessage { get; set; }


}

捕獲異常

在try catch塊中使用代碼並捕獲異常。使用任何數據傳輸方法(ViewBag,vs vs)或使用jsonResult發送數據以進行查看

 OperationResult resultData = new OperationResult();

    try
    {
      if (model.buildingID == 0)
      {
        var result = objAddBuildingBusinessModel.AddBuilding(model, connectionstring,isUnique);                       
      }
      else
      {
        var result = objAddBuildingBusinessModel.UpdateBuilding(model, connectionstring);
      }
      //resultData.ResultCode = OperationResult.SUCCESS;
      resultData.ResultCode = (int)OperationEnum.SUCCESS;
      resultData.ResultMessage = "Opetaion Success";
    }
    catch(Exception ex)
    {
       //resultData.ResultCode = OperationResult.FAIL;
       resultData.ResultCode = (int)OperationEnum.FAIL;
       resultData.ResultMessage = ex.Message;
    }
   // return resultData on viewBag or andy transafer data to view 
    ViewBag.ResultData = resultData;

顯示例外

最佳做法是將操作值枚舉為Enum(成功或失敗),您可以使用硬編碼作為示例,也可以使用enum值(如果使用enum值),這樣您就可以在兩側通過相同的enum值

if ('@ViewBag.ResultData.ResultCode' ==  '@(int)OperationEnum.FAIL') // or "2"
{
    var exMessage = '@ViewBag.ResultData.ResultMessage';
    alert(exMessage );
}

首次使用Viewbag

 ViewBag.ans = "result";

然后在模型部分

  @model IEnumerable<MVCApp.Models.ModelName>
<b>Result:</b> @ViewBag.ans<br />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM