2016-09-19 90 views
0

其實我有一個控制器動作,它從模型中的函數獲取變量'result'的值。操作如下。MVC將數據從模型傳遞到視圖

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

所以現在基於可變「結果」我有若可變「結果」的值是假,以顯示在視圖中的錯誤消息的值。我應該在哪裏看到這一點,我應該怎麼做。請幫助我,因爲我是新來的MVC

+0

誤差從JavaScript或HTML DIV消息? –

+0

使用javascript。 –

+0

快速的方法是使用ViewBag(即ViewBag.result = result,確保結果在範圍內)。然後在視圖中添加@ ViewBag.result來顯示值。 – nocturns2

回答

0

我想,你可以創建一個模型,以保持相同的信息,然後將數據發送到查看任何傳輸方法和顯示異常。

EnumClass

創建類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; } 


} 

catch異常

在try catch塊和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; 

顯示異常

最佳實踐獲得操作價值枚舉(成功或失敗) 如果使用枚舉值 ,您可以使用硬編碼或使用枚舉值,以便您可以通過兩側相同的枚舉值達到

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

但我該如何在枚舉的幫助下做到這一點。什麼是OperationResult.SUCCESS的含義?你能否詳細說明一下。 –

+0

我更新了答案。我在OperationResult類中使用操作屬性 您可以使用這種方式或使用枚舉值,如果使用枚舉值,以便您可以達到通過兩側相同的枚舉值 –

+0

我添加枚舉類 –

1

商店結果輸出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'); 
    } 
}); 
+0

我已經更新了javascript驗證的答案 –

0

第一使用Viewbag

ViewBag.ans = "result"; 

然後在模型部

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