Доступ к элементам управления в представлении Razor с контроллера MVC4

Я новичок в MVC. В моем приложении страница просмотра создается с помощью бритвы, создавая ее из другого дизайнера html-страниц. У меня есть сомнения, как получить доступ к элементам управления html с соответствующего контроллера. Например, я создаю контроллер с именем Home и соответствующий вид. Добавил в него текстовое поле.

<input id="name" type="text" name="txtName"/>

Теперь я хочу получить и установить значение в текстовом поле с контроллера без использования скрипта. Как

txtName.text="...."

Это возможно..?


person BPX    schedule 11.01.2014    source источник
comment
несколько... вы используете модель с представлением?   -  person Ross Bush    schedule 11.01.2014


Ответы (2)


Похоже, вы думаете о вещах с точки зрения веб-форм, например. элементы управления, настройка свойств на стороне сервера.

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

Вот тут-то и появляются модели представлений:

// M - model
public sealed class MyViewModel
{
    public string Name { get; set; }
}

// V - view
@model MyViewModel

// (usually code to begin a form goes here)

@Html.TextBoxFor( o => o.Name )

// C - controller
public ActionResult MyActionMethod()
{
    var model = new MyViewModel { Name = "Hello" };
    return View( model );
}

Это может показаться дополнительным шагом (так и есть), но он чище, гораздо более гибкий и гораздо более удобный для тестирования.

person Tim Medora    schedule 11.01.2014

Это было бы возможно только с другим запросом к серверу (например, POST, GET), потому что код контроллера может работать только на стороне сервера. После обработки другого запроса вы можете использовать ViewModel для заполнения текстового поля HTML при его рендеринге, но я сомневаюсь, что это то, что вы ищете.

Если вы знакомы с настольным программированием (например, с Window Forms) и хотите немедленно изменить и обработать поля на HTML-странице, вам потребуется использовать JavaScript. Если вы не знакомы с веб-программированием или просто плохо знакомы с парадигмой MVC, я предлагаю вам попробовать несколько учебники MSDN.

person Jesse Webb    schedule 11.01.2014