Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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>
}
like image 833
14578446 Avatar asked Jan 17 '12 15:01

14578446


2 Answers

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

like image 199
archil Avatar answered Oct 08 '22 22:10

archil


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())
like image 23
Kevin Junghans Avatar answered Oct 08 '22 22:10

Kevin Junghans