成功消息作为ASP中的一个模型.净MVC

本文关键字:一个 模型 MVC 消息 ASP 成功 | 更新日期: 2023-09-27 18:05:04

我打算在我的MVC web应用程序中重用成功消息作为一个模型,这个模型可以是另一个模型的一部分,以报告数据修改期间的反馈状态。到目前为止,我还不能让它工作。假设我有一个FeedbackMessage对象作为模型,以反映成功消息:

public class FeedbackMessage
{
    public string Message { get; private set; }
    public FeedbackType Type { get; private set; } // 'info', 'error', 'warning', 'success'
    public string Image { get; }
}

和我有一个用户偏好页面,它使用偏好对象作为模型,这个对象有如下的FeedbackMessage

public class Preference
{
    public string DisplayName { get; set;}
    public string BlogUrl { get; set; }
    public FeedbackMessage FeedbackMessage { get; set; }
    public bool IsValid { get; set; }
}

,在我的控制器中,我遵循PRG (Post-Redirect-Get)模式进行数据修改。代码简单如下:

public ActionResult Preference()
{
     var model = new Preference();
     model.DisplayName = Models.Settings.Preference.DisplayName;
     ...
     return this.View(model);
}
[HttpPost]
public Action Preference(Preference model)
{
    if (model.IsValid)
    { 
         model.FeedbackMessage = new FeedbackMessage { Type = "success" };
    }
    else
    {
         model.FeedbackMessage = new FeedbackMessage { Type = "failure" };
    }
    ...
    return this.Preference(); // issue Get
}

我的问题是,我不能得到反馈后做POST,因为在get期间,它再次初始化首选对象。在这一点上,我不愿意像其他stackoverlow线程建议的那样使用TempData,因为它在模型中更显式和更清晰。

有没有人在这方面有经验,告诉我如何解决这个问题,或者给我一个更好的设计?谢谢。

成功消息作为ASP中的一个模型.净MVC

  1. 使用ajax发布首选项模型,然后使用json返回结果(FeedbackMessage)给客户端,并使用js显示反馈

  2. 由于跨不同请求的Post-Redirect-Get,通常使用TempData来保存模型并在下一个请求中显示,但我们可以在基本布局视图

  3. 中这样做
  4. 如果你不想改变上面的代码,你可以添加一个私有方法接受不同的偏好模型,并返回视图操作给客户端。以便重用模型