Как получить значение для ввода html.textbox в ASP.NET MVC 2 - PullRequest
3 голосов
/ 12 июля 2010

У меня сейчас есть TextBox, используя:

<%: Html.TextBox("TextBox1") %>

Как получить значение того, что введено в TextBox в виде строки, чтобы я мог использовать эту строковую переменную во всем приложении?

В представлении он следовал по наследству в верхней части страницы модели. Эта страница называется «InputNumbersSection»:

<%: Html.TextBoxFor(m => m.Number) %>

и действие:

<%: Html.ActionLink("Get Number!", "DisplayNumbersSection") %>

Модель имеет это:

 public class NumberModels
    {
        public string Number { get; set; }
    }

Контроллер имеет следующее:

public ActionResult DisplayNumbersSection(NumberModels model)
        {

            if (ModelState.IsValid)
            {
                string TextBoxValue = model.Number;
                ViewData["Number"] = TextBoxValue;
            }      
            return View();
        }

ViewData, который я использую на другой странице, чтобы вернуть число из текстового поля, набранного в представлении.

Когда я что-то набираю в текстовом поле, я не вижу, чтобы свойство получало удар или выполнялось. Свойство «Number» все время возвращает NULL. Похоже, что он не берет то, что я печатаю в TextBox

Ответы [ 5 ]

8 голосов
/ 12 июля 2010

Ну, для начала у вас должна быть модель для вашего взгляда:

public class YourModel
{
    public string YourProperty { get; set; }
}

Ваш контроллер, который создаст начальный вид:

public ActionResult YourEvent()
{
    return View(new YourModel());
}

Чтобы создать строго типизированное представление, необходимо добавить в директиву Page следующее:

<%@ Page Title="" Inherits="System.Web.Mvc.ViewPage<YourModel>" %>

Тогда, по вашему мнению, вы можете сделать:

<%: Html.TextBoxFor(m => m.YourProperty) %>

Тогда в вашем контроллере, когда вы отправляете форму:

[HttpPost]
public ActionResult YourEvent(YourModel model)
{
    if (ModelState.IsValid)
    {
         string TextBoxValue = model.YourProperty;
         // do what you want with it
    }            
    // do something
}

Строго типизированное представление - лучший способ, но если вы хотите сделать это быстро и грязно, вы всегда можете получить доступ к объекту Request и проверить Form.

Редактировать: Добавлено строго типизированное определение вида.

1 голос
/ 12 июля 2010

То же, что решение для vb, но в c #.

[HttpPost]
public ActionResult YourActionMethod(string TextBox1)
{
    //use value of TextBox1
}
1 голос
/ 12 июля 2010

Если вам требуется серверная переменная TextBox1, текстовое поле должно быть внутри формы, отправляющей сообщение в Action в контроллере, это будет означать, что переменная TextBox1 будет доступна в качестве параметра действия, в которое отправляется форма. т.е. По вашему мнению, вы можете иметь:

<% Using Html.BeginForm() %>
   <%: Html.TextBox("FirstName") %>
   <Input type=submit />
<% End Using %>

Тогда в контроллере у вас будет метод

Function Home(ByVal FirstName As String) As ActionResult
  MsgBox(FirstName)
End Function
1 голос
/ 12 июля 2010

Вы можете получить его из

Request.Form

Но это очень примитивное решение.

Вы должны использовать строго типизированные представления и работать с моделью в действиях.

0 голосов
/ 12 июля 2010

В представлении он следовал по наследству в верхней части страницы модели.Эта страница называется «InputNumbersSection»:

<%: Html.TextBoxFor(m => m.Number) %>

и действие:

<%: Html.ActionLink("Get Number!", "DisplayNumbersSection") %>

Модель имеет следующее:

 public class NumberModels
    {
        public string Number { get; set; }
    }

Контроллер имеет следующее:

public ActionResult DisplayNumbersSection(NumberModels model)
        {

            if (ModelState.IsValid)
            {
                string TextBoxValue = model.Number;
                ViewData["Number"] = TextBoxValue;
            }      
            return View();
        }

ViewData, который я использую на другой странице, чтобы вернуть число из текстового поля, набранного в представлении.

Когда я что-то набираю в текстовое поле, я не вижу, что свойство получает ударили выполнен.Свойство «Number» все время возвращает NULL.Кажется, что он не воспринимает то, что я печатаю в TextBox

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...