【问题标题】:How to pass a string message from controller to view in MVC如何从控制器传递字符串消息以在 MVC 中查看
【发布时间】:2014-05-05 16:40:36
【问题描述】:

我想通过从控制器传递到视图的字符串变量来显示字符串消息。

这是我的控制器代码:

public ActionResult SearchProduct(string SearchString)
        {

            FlipcartDBContextEntities db = new FlipcartDBContextEntities();
            string noResult="Search Result Not Found";
            var products = from p in db.Products  select p;

            if (!String.IsNullOrEmpty(SearchString))
            {
                products = products.Where(s => s.ProductName.StartsWith(SearchString));
                return View(products);

            }

            else
            {

                return View(noResult);
            }

// 这里我想在视图中显示字符串值 ei Message。

请指导我。 我是 MVC 新手

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    将您的控制器更改为:

        public ActionResult SearchProduct(string SearchString)
        {
    
            FlipcartDBContextEntities db = new FlipcartDBContextEntities();
            string noResult="Search Result Not Found";
            var products = from p in db.Products  select p;
    
            if (!String.IsNullOrEmpty(SearchString))
            {
                products = products.Where(s => s.ProductName.StartsWith(SearchString));
                return View(products.ToList());
    
            }
    
            else
            {
                ViewBag.Message = noResult;
                return View(new List,Product>());
            }
    

    您可以通过 ViewBag 将消息从服​​务器传递到客户端。请注意,您必须从 if/else 的两侧返回相同的 API,因此您不能一次传递产品列表而另一次传递字符串。在您看来:

    if (ViewBag.Message != null)
    {
       <span>@ViewBag.Message</span>
    }
    

    或者不执行任何操作,只需根据列表中包含项目的产品列表的存在将消息放入视图中。

    // Model = Products returned; must make sure list returned is not null
    if (Model.Count > 0)
    {
       <span>Search Result not found</span>
    }
    

    或者甚至作为另一种选择,您可以创建一个模型类:

    public class SearchModel
    {
       public List<Product> Products { get; set; }
    
       public string EmptyMessage { get; set; }
    }
    

    并通过您的视图方法返回:

    //if
    return View(new SearchModel { Products = products });
    //else
    return View(new SearchModel { EmptyMessage = "Search result Not Found" });
    

    【讨论】:

    • 视图模型(最后一个例子),恕我直言,是最好的方法。视图需要的所有内容都在一个对象中传递,阅读代码时意图非常明确。
    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多