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