11

I am developing an application where I need to pass the value of username from a controller to a view. i tried ViewData as given in http://msdn.microsoft.com/en-us/library/system.web.mvc.viewdatadictionary.aspx

My code in controller is

public ActionResult Index(string UserName, string Password)
{
        ViewData["UserName"] = UserName;
        return View();
}

where username and password are obtained from another form.

And the code in the view is

@{
    ViewBag.Title = "Index";  
}
<h2>Index</h2>
<%= ViewData["UserName"] %>

But when I run this code, the display shows <%= ViewData["UserName"] %> instead of the actual username say, for example "XYZ".

How should I display the actual UserName?

Thank you very much in advance for your help.

3 Answers 3

13

You're using razor syntax here but you're trying to mix it with older asp.net syntax, use

@ViewData["UserName"] 

instead

Also, normally you wouldn't use the view bag to pass data to the view. Standard practice is to create a model (a standard class) with all of the bits of data your View (page) wants then pass that model to the view from your controller (return View(myModel);)

To do this you also need to declare the type of model you're using in your view

@model Full.Namespace.To.Your.MyModel

read http://msdn.microsoft.com/en-us/gg618479 for a basic mvc models tutorial

Sign up to request clarification or add additional context in comments.

Comments

6

It appears that you're using the Razor View Engine rather than the Web Forms View Engine. Try the following instead:

@{ 
    ViewBag.Title = "Index";   
} 
<h2>Index</h2> 
@ViewData["UserName"]

Comments

0

The 'ViewBag' is a holdover from MVC2. MVC3 development should use strongly typed 'ViewModel's.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.