Показать viewdata в asp.net 4.0 MVC - PullRequest
5 голосов
/ 17 января 2012

То, что я пытаюсь сделать, это отобразить сообщение об успешном завершении после успешного выполнения запроса в базе данных. Все работает нормально, кроме моих 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 ]

8 голосов
/ 17 января 2012

Вы используете неправильный метод. Первый параметр метода Label - это имя свойства модели. И он генерирует метку html с атрибутом for = "parameterValue", а не метку с этим текстом. Чтобы отобразить сообщение пользователю, вы должны сделать это как

@ViewData["SuccessMessage"]

Кроме того, взгляните на свойство TempData

1 голос
/ 17 января 2012

Проблема в том, как вы используете метку Html Helper. Первый аргумент всегда является выражением, которое указывает свойства для отображения. Второй необязательный аргумент - это текст для отображения. Если вы измените его на следующий, текст в ваших ViewData будет отображаться.

@Html.Label("", ViewData["SuccessMessage"].ToString())
0 голосов
/ 25 октября 2018

Здесь я привожу некоторый пример, чтобы лучше понять.

присущим вашим моделям здесь @using Mvc Project.Models

@ {загрузить в переменную View Data ["Student"] как ваша собственная модель; }

"@ object.Name" отображается между тегами

**

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...