2012-01-05 2 views
4

Я хочу получить значение из текстового поля в моем представлении asp.net mvc.получить значение от Html.TextBoxFor

<%: Html.TextBoxFor(m => m.UserName, new { @class = "flat" })%> 
+0

ли вы имеете в виду получение значения через форму пост к серверу, или через JavaScript в браузере? –

+0

@ Michael Yoon: Whatever :) – Nothing

+0

Вы можете использовать строковое значение = Request.Form ("UserName"); если вы хотите, чтобы textBox ввел значение в действие вашего контроллера, отправьте .... – RollerCosta

ответ

5

Если вы хотите получить значение из формы поста, MVC автоматически связать его с любыми параметрами, которые соответствуют имени свойства. Так что если вам форму отправил к действию MyPost это будет выглядеть следующим образом:

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

Если у вас есть много полей для размещения, вы можете захотеть использовать объект запроса. MVC автоматически свяжет свойства с тем же именем.

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

public ActionResult MyPost(MyRequest request) 

Имя пользователя будет заполнено почтой.

Если вы хотите, чтобы вытащить значения с помощью JavaScript, вы, вероятно, хотите поставить идентификатор на HTML, как так:

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

Затем вы можете использовать JQuery или что вы хотите выбрать элемент с это имя, предполагая, что вы хотите только это свойство и не будете перечислять кучу полей формы.

2

Если предположить, что ваш текстовое поле внутри формы, и вы представили его, вы можете найти значение внутри модели, которую Вы создали, или через formCollection так:

синтаксиса Razor

@model Model_A 

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

контроллер (Используйте любой из следующих)

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

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

    //or  
    formCollection["UserName"]  
} 

... или если вы представить без form (например, с помощью JQuery & Javascript)

Javascript

function Submit() { 

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

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

     return true; 
    } 

Ваш контроллер будет необходимо иметь отдельные свойства, в качестве входных данных для имущих какой метод вы 're подчиняется.

Контроллер

public ActionResult ActionName2(string UserName) 
{ 

} 
Смежные вопросы