在asp.net 4.0 mvc中显示视图数据

在asp.net 4.0 mvc中显示视图数据,.net,asp.net-mvc,asp.net-mvc-3,c#-4.0,razor,.net,Asp.net Mvc,Asp.net Mvc 3,C# 4.0,Razor,我试图做的是在数据库上成功执行查询后显示一条成功消息。除了我的viewdata在查看页面上不显示任何内容外,其他一切都正常。不知道为什么。下面是我的代码,请帮帮我 public class SearchItem { [Required(ErrorMessage = "Required Field")] public string searchItem { get; set; } } public ActionResult Index() { t

我试图做的是在数据库上成功执行查询后显示一条成功消息。除了我的viewdata在查看页面上不显示任何内容外,其他一切都正常。不知道为什么。下面是我的代码,请帮帮我

public class SearchItem
{
    [Required(ErrorMessage = "Required Field")]
    public string searchItem { get; set; }
}


    public ActionResult Index()
    {
        try
        {
            ViewData["SuccessMessage"] = "";
            return View();
        }
        catch (Exception ex)
        {
            return View("EmptySearch");
        }
    }

    [HttpPost]
    public ActionResult Index(string searchItem)
    {
        try
        {
             ............
            //database query with searchItem
            ...............

            string suceesstring = "A WAREHOUSE HOLD has been added.";
            ViewData["SuccessMessage"] = suceesstring;
            return View();
        }
        catch (Exception ex)
        {
            return View("EmptySearch");
        }
    }
这是我的查看页面:

@model KeleIntegratedTools.Models.SearchItem

@{
    ViewBag.Title = "Great Plains hold Insert Utility";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

< h2>Great Plains hold Insert Utility</h2>
< p class ="PenColor" >
Please enter order number to place on warehouse hold.
@model KeleIntegratedTools.Models.SearchItem
@{
ViewBag.Title=“大平原控股插入实用程序”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}

大平原保持插入实用程序

请输入订单号以放置在仓库等待中。

@使用(Html.BeginForm(“索引”、“大平原”))
{
订单信息 @Html.Label(“订单号”) @Html.TextBox(“searchItem”) @Html.ValidationMessageFor(m=>m.searchItem) @Label(ViewData[“SuccessMessage”].ToString())

}
您使用了错误的方法。方法的第一个参数是模型属性的名称。它会生成带有属性for=“parameterValue”的html标签,而不是带有该文本的标签。要向用户显示消息,您应该像

@ViewData["SuccessMessage"]

另外,请看一看

问题在于如何使用Html助手方法标签。第一个参数始终是一个表示要显示的属性的表达式。第二个可选参数是要显示的文本。如果将其更改为以下内容,将显示ViewData中的文本

@Html.Label("", ViewData["SuccessMessage"].ToString())

在这里,我提供一些例子来更好地理解

使用Mvc Project.models在此处创建您的模型

@{将变量视图数据[“学生”]作为您自己的模型加载;}

“@object.Name”显示在标记之间


**

谢谢@archil,这个小问题一直困扰着我,因为长期以来,作为mvc的初学者,我一直无法解决这个问题。感谢并感谢您的帮助:)此外,您应该使用ViewBag,而不是ViewData。请阅读我对MVC的介绍,即@RickAnderson MSFT上的EF/MVC教程。实际上,他根本不应该使用ViewBag/ViewData。对于消息显示,正如我指出的,他应该使用TempData。在所有其他情况下,仅限ViewModels。
@Html.Label("", ViewData["SuccessMessage"].ToString())