繁体   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