14578446
14578446

Reputation: 1074

Display viewdata in asp.net 4.0 mvc

What ia m trying to do is display a success message after the query has been executed succesfully on database. Everything is working fine except my viewdata which does not display anything on view page. Not sure why. Below is my code please help me guys.

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");
        }
    }

And here is my view page:

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

Upvotes: 6

Views: 28976

Answers (3)

Raviteja V
Raviteja V

Reputation: 463

Here i am providing some example to get better understanding.

inherent your models here @using Mvc Project.Models

@{ load into variable View Data["Student"] as Your Own Model; }

" @object.Name" display between the tags

**

Upvotes: 0

Kevin Junghans
Kevin Junghans

Reputation: 17540

The problem is how you are using the Html Helper method Label. The first argument is always an expression that indicates the properties to display. The second optional argument is the text to display. If you change it to the following the text in your ViewData will display.

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

Upvotes: 1

archil
archil

Reputation: 39501

You are using wrong method. First parameter of Label method is the name of property of model. And it generates html label with attribute for="parameterValue", not the label with that text. To display message to user, you should do it like

@ViewData["SuccessMessage"]

Also, take a look at TempData property

Upvotes: 9

Related Questions