Reputation: 1074
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
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
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
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