Как передать значение из представления в контроллер - PullRequest
3 голосов
/ 07 апреля 2011

У меня есть вопрос.

Мне нужно передать значение в C# and MVC3 контроллеру, но я не знаю как.

Код на мой взгляд:

@html.textbox("Name"); 
<input value="Envoyer" type="submit">

Как я могу получить значение name на мой контроллер, пожалуйста?

Спасибо

Ответы [ 4 ]

6 голосов
/ 07 апреля 2011

Оберните его в форму и используйте кнопку отправки для вызова вашего метода действия.

<% using (Html.BeginForm("MethodName", "Home", FormMethod.Post)) {%>
     <% Html.Textbox("Name") %> 
     <input value="Envoyer" type="submit" />
<% } %>



[HttpPost]
public ActionResult MethodName(FormCollection col)
{
    string name = col["Name"];
}
6 голосов
/ 07 апреля 2011

есть другой способ.

[HttpPost]
public ActionResult Index() {

    string name = Request["name"];
}
3 голосов
/ 07 апреля 2011

Просто оберните его в форму, как уже было предложено:

@using(Html.BeginForm()) {
    @Html.Textbox("Name")

    <input value="Envoyer" type="submit">
}

И затем в действии вашего контроллера просто объявите параметр с именем Name (при условии, что это происходит в представлении, называемомIndex):

[HttpPost]
public ActionResult Index(string Name)
{
    // do whatever with Name
}

Использование FormCollection, как уже было сказано, также является вполне приемлемым вариантом, но, на мой взгляд, это даже проще и немного чище.

1 голос
/ 07 апреля 2011

<% = Модель%>

В MVC 3 вы видите , установленный как модель по умолчанию в вашем представлении. Просто передайте строку как объект в представление (верните View ((object) "Name");) из вашего контроллера.

См. Также более сложный пример.

[Изменить]

Я должен начать читать лучше:)

Хорошо, поехали.

Самый простой способ сделать это - через . Любой элемент ввода публикуется на вашем контроллере, где атрибутом name будет имя переменной (параметр).

* * 1 022 Пример: * 1 023 *
<form action="/Contact/SendMessage" method="post">
    <table>
        <tr>
            <th>Your e-mail adres:</th>
            <td class="inputCell">
                <input id="txtEmail" name="Email" type="text" value="<%= Model %>" />
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <textarea name="Message" rows="10" style="width: 450px;"></textarea>
            </td>
        </tr>
        <tr>
            <th colspan="2" style="text-align: right;"><input type="submit" id="SendButton" value="Send Message" /></th>
        </tr>
    </table>
</form>

На контроллере вы можете иметь свою функцию, такую ​​как:

[AcceptVerbs(HttpVerbs.Post)]
public RedirectResult SendMessage(String Email, String Message)
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...