【问题标题】:Display viewdata in asp.net 4.0 mvc在 asp.net 4.0 mvc 中显示视图数据
【发布时间】:2012-01-17 15:53:21
【问题描述】:

我试图做的是在数据库上成功执行查询后显示一条成功消息。一切工作正常,除了我的视图数据在视图页面上没有显示任何内容。不知道为什么。以下是我的代码,请帮助我。

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>
}

【问题讨论】:

    标签: .net asp.net-mvc asp.net-mvc-3 c#-4.0 razor


    【解决方案1】:

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

    @ViewData["SuccessMessage"]
    

    另外,看看TempData property

    【讨论】:

    • 感谢@archil,这个小问题一直困扰着我,因为作为 mvc 的初学者很久没有得到它。谢谢你的帮助:)
    • 此外,您应该使用 ViewBag,而不是 ViewData。请阅读我对 MVC 的介绍,asp.net/mvc的 EF/MVC 教程
    • @RickAnderson-MSFT 实际上,他根本不应该使用 ViewBag/ViewData。正如我所指出的,对于消息显示,他应该使用 TempData。在所有其他情况下,仅适用于 ViewModel。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      在此处继承您的模型@using Mvc Project.Models

      @{ 加载到变量 View Data["Student"] as Your Own Model; }

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

      **

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-21
        • 2015-03-25
        • 2014-10-06
        • 2014-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多