Получение входного значения при отправке MVC 3 - PullRequest
1 голос
/ 15 августа 2011

Я установил приложение MVC 3 по умолчанию, и я новичок в этом, но у меня проблема, когда я пытаюсь напечатать значение из поля ввода после того, как я нажал кнопку отправки.

Это простая форма регистрации с кнопкой отправки внизу. Когда я нажимаю кнопку «Отправить», ничего не происходит, за исключением того, что текст из одного из полей ввода должен быть напечатан на ярлыке или что-то под кнопкой «Отправить». Я совершенно заблудился, как это сделать, я пытался создать метку с идентификатором, но я не могу получить доступ ни к значению полей ввода, ни к метке.

Действие контроллера выглядит следующим образом:

[HttpPost]
        public ActionResult Create(Person person)
        {
            if (ModelState.IsValid)
            {
                db.Persons.Add(person);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }

            return View(person);
        } 

Полная форма выглядит так:

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>

        <div class="editor-label">
            @Html.LabelFor(model => model.Firstname)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Firstname)
            @Html.ValidationMessageFor(model => model.Firstname)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Lastname)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Lastname)
            @Html.ValidationMessageFor(model => model.Lastname)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Email)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Email)
            @Html.ValidationMessageFor(model => model.Email)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Phone)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Phone)
            @Html.ValidationMessageFor(model => model.Phone)
        </div>
        <p>
            <button id="btn_Register">
                <span class="ui-button-text">Register</span>
            </button>
        </p>               
    </fieldset>
 }

Ответы [ 3 ]

0 голосов
/ 30 августа 2011

Вы можете иметь возможность перейти к контроллеру при нажатии кнопки submit, получить значение поля ввода и установить его в виде метки, которую вы хотите.Однако, если он просто устанавливает текст метки по нажатию кнопки, то вам не нужно иметь какой-либо серверный код и, так сказать, код MVC.Просто используйте простую кнопку вместо кнопки отправки.Напишите событие / функцию JavaScript / jQuery для нажатия кнопки и установите текст метки из необходимого поля ввода.Что-то вроде ...

$("#fooLabel").text($("#fooTextEditor").val());

Для этого вам нужно знать идентификаторы этих двух элементов управления.Поскольку отсутствует встроенная перегрузка для предоставления идентификатора полям с использованием @ Html.EditorFor или @ Html.LabelFor, вы можете переопределить HtmlHelper, как предложено в этом посте. Как указать идентификатор для Html.LabelFor <>(MVC Razor)

Или даже проще, вы можете использовать любой инструмент разработки браузера, чтобы найти сгенерированный Id для двух элементов управления и напрямую использовать их в вашем JaveScript / jQuery.Обычно оно совпадает с именем поля модели.

0 голосов
/ 30 ноября 2012

Поскольку вы не хотите отправлять страницу или любое другое действие, вы должны выполнить это действие на стороне клиента с помощью сценария Java или Jquery.В сценарии java просто добавьте событие onclick к кнопке btn_Register и установите значение метки в текстовое поле.Если вы используете jquery в событии click, присвойте значение, как показано ниже

btn_Register.click(function(){
    $("#label1").text($('txtfield1').val());
});
0 голосов
/ 15 августа 2011

Чтобы получить все значения из опубликованной формы, они будут (в вашем примере) в объекте person.

Чтобы вывести значение в метке, вам нужно изменить объект person на новое значение, а затем в представлении View вывести это значение.

, например

person.labelvalue = "foo";

<span>@model.labelvalue</span>

Я предлагаю вам взглянуть на asp.net / mvc в качестве стартовой базы, прежде чем переходить с asp.net на asp.net mvc

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