Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get value from Html.TextBoxFor [closed]

I want to get the value from text box in my view of asp.net mvc.

 <%: Html.TextBoxFor(m => m.UserName, new { @class = "flat" })%>
like image 404
Nothing Avatar asked Jan 05 '12 07:01

Nothing


2 Answers

If you want to get the value from a form post, MVC will automatically bind it to any parameters that match the name of the property. So if you form posted to the action MyPost it would look like this:

public ActionResult MyPost(string UserName) { //Not case sensitive, you can do userName as well
    var a = UserName;
}

If you have lots of fields to post, you might want to use a request object. MVC will automatically bind properties with the same name.

public class MyRequest {
    public string UserName { get; set; }
}

public ActionResult MyPost(MyRequest request)

UserName would be populated on the post.

If you wanted to pull out the values using javascript, you would probably want to put an id on the html like so:

Html.TextBoxFor(m => m.UserName, new { @class = "flat", id = "my-textbox" })

Then you could use jquery or whatever you like to select the element with that name, assuming you wanted just that property and would not be enumerating a bunch of form fields.

like image 133
Michael Yoon Avatar answered Oct 02 '22 22:10

Michael Yoon


Assuming that your text box is inside a form, and you submitted it, you can find the value inside the model you have created, or via the formCollection like this:

Razor syntax

@model Model_A 

@using (Html.BeginForm())
{
  @Html.TextBoxFor(m => m.UserName, new { @class = "flat" })
  <input type="submit" value="Submit"/>
}

Controller (Use any of the following)

public ActionResult ActionName(Model_A viewModel, FormCollection formCollection)
{       
   viewModel.UsernName

   //or       
   formCollection.GetValue("UserName").AttemptedValue

   //or       
   formCollection["UserName"]       
}

...or if you submit without a form (for example using JQuery & Javascript)

Javascript

function Submit() {

        var usr= document.getElementById('UserName').value;

        $.ajax({
            type: "POST",
            url: '@Url.Action("ActionName2")',
            data: "UserName=" + usr            
        });

        return true;
    }

Your controller would need to have the individual properties, as input propertied for whatever method you're submitting to.

Controller

public ActionResult ActionName2(string UserName)
{

}
like image 37
Rohan Büchner Avatar answered Oct 02 '22 21:10

Rohan Büchner