在asp.net 4.0 mvc中显示viewdata

时间:2012-01-17 15:53:21

标签: .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()
    {
        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.

@using (Html.BeginForm("Index", "GreatPlains"))

{

< div>
    < fieldset>
        < legend>Order Information</legend>

        <div class="editor-label">
            @Html.Label("Order Number")

            @Html.TextBox("searchItem")
            @Html.ValidationMessageFor(m => m.searchItem)
            @Html.Label(ViewData["SuccessMessage"].ToString())
        </div>
        <p>
            <input type="submit" value="Search" />
        </p>
    </fieldset>
</div>
}

3 个答案:

答案 0 :(得分:8)

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

一样
@ViewData["SuccessMessage"]

另外,请查看TempData property

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

在这里,我提供一些示例以更好地理解。

在这里使用Mvc Project.Models继承您的模型

@ {作为您自己的模型加载到变量View Data [“ Student”]中; }

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

**