【问题标题】:Mvc view operation result messagemvc查看操作结果消息
【发布时间】:2013-11-07 09:16:31
【问题描述】:

如果该消息不是视图作为输入的模型的一部分,控制器如何告诉视图显示特定消息?

例如,在进行操作后,我在视图中显示操作的结果,即模型中的“消息”字段。但是如果模型操作后没有数据,当然是不会显示消息的。

型号:

public class xxViewModel
{
    public string a { get; set; }
    public string b{ get; set; }
    public string c{ get; set; }
    public string d{ get; set; }
    public string Message { get; set; }
}

在视图中:

@Model.ElementAt(0).Message

视图提供删除表格行的可能性;在执行过程中删除最后一个模型元素(表格行)后,我想显示一条消息,但当然不可能。也许我必须使用 session 之类的东西?

【问题讨论】:

  • 添加一些代码,哪种编程语言,你具体想做什么?
  • 完成。编程语言是 C#。
  • 好吧,我不是很喜欢c#,但是我为你添加了c#标签,所以你的帖子更容易找到;)

标签: c# asp.net-mvc


【解决方案1】:

在您的控制器中设置一个 ViewData / ViewBag 属性。在你的视野中消费它。

【讨论】:

    【解决方案2】:

    使用包含数据和消息的视图模型怎么样?喜欢:

    public class xxViewModel
    {
        public string a { get; set; }
        public string b{ get; set; }
        public string c{ get; set; }
        public string d{ get; set; }
    }
    
    public class MainViewModel
    {
        public string Message { get; set; }
        public IEnumerable<xxViewModel> Elements { get; set; }
    }
    

    您的视图如下所示:

    @model myNamespace.MainViewModel
    
    @Html.DisplayFor(m => m.Message) // displaying your message
    
    @foreach(xxViewModel elem in Model.Elements)
    {
        // display what you want
    }
    

    【讨论】:

      【解决方案3】:

      如果您不需要存储此消息以供进一步使用只是为了显示它,您可以执行以下操作:

      public class xxViewModel
      {
          public string a { get; set; }
          public string b{ get; set; }
          public string c{ get; set; }
          public string d{ get; set; }
      }
      

      然后控制器是这样的:

      public class Controller
      {
          public ActionResult YourMethod()
          {
             // here you can set whatever message you want to display after the operation
              ViewData["Message"] = your message;
              return View(Model);
          }
      }
      

      在您看来,您只需像这样调用消息:

      @model myNamespace.xxViewModel
      
      @foreach(var item in Model)
      {
          // do some stuff
      }
      
      @Html.Label(ViewData["Message"].ToString())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多