MVC将数据从模型传递到视图

时间:2016-09-19 05:21:34

标签: c# asp.net asp.net-mvc razor

实际上我有一个控制器动作,它从模型中的函数获取变量'result'的值。行动如下。

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

所以现在基于变量'result'的值,如果变量'result'的值为false,我必须在视图中显示错误消息。我应该在哪里显示它,我该怎么做。请帮助我,因为我是MVC的新手

3 个答案:

答案 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');
    }
});

答案 1 :(得分: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; }


}

捕获例外

  

在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的操作值(成功或失败)   如果使用枚举值,您可以使用硬编码或使用枚举值作为示例   这样你就可以在两边达到相同的枚举值

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

答案 2 :(得分:0)

首先使用Viewbag

 ViewBag.ans = "result";

然后在模型部分

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