Связывание элементов, созданных в JQuery, с параметром в моем контроллере - PullRequest
0 голосов
/ 18 января 2011

У меня есть форма в моем представлении со следующими двумя элементами html (эти элементы были созданы динамически JQuery и не были привязаны к представлению с использованием модели).

<input id="JsonCommand_0__NickName" type"radio" name="JsonCommand[0].NickName" value="name1" checked>
<input id="JsonCommand_1__NickName" type"radio" name="JsonCommand[1].NickName" value="name2" checked>

У меня есть следующий класс:

public class JsonCommand
{
    public string NickName { get; set; }
}

У меня есть следующий контроллер:

[HttpPost, Authorize, Compress]
public ActionResult Edit(IEnumerable<JsonCommand> command)
{
    ....
}

Я использую плагин JQuery.Form для публикации на этом контроллере. Можно ли сериализовать коллекцию форм в объекты JsonCommand таким образом? В настоящее время при попытке получить нулевое значение для команды.

Можно ли как-нибудь создать коллекцию на стороне клиента и связать ее с моим объектом JsonCommand?

Спасибо

1 Ответ

0 голосов
/ 18 января 2011

У меня прекрасно работает следующее:

Модель:

public class JsonCommand
{
    public string NickName { get; set; }
}

Контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new[] 
        {
            new JsonCommand { NickName = "name1" },
            new JsonCommand { NickName = "name2" },
        });
    }

    [HttpPost]
    public ActionResult Index(IEnumerable<JsonCommand> command)
    {
        return Json(new { message = "ok" });
    }
}

Просмотр (~/Views/Home/Index.aspx):

<script type="text/javascript" src="https://github.com/malsup/form/raw/master/jquery.form.js?v2.43"></script>
<script type="text/javascript">
    $('form').ajaxForm(function (result) {
        alert(result.message);
    });
</script>

<% using (Html.BeginForm()) } %>
    <%: Html.EditorForModel() %>
    <input type="submit" value="OK" />
<% } %>

Шаблон редактора (~/Views/Home/EditorTemplates/JsonCommand.aspx):

<%@ Control 
    Language="C#"
    Inherits="System.Web.Mvc.ViewUserControl<AppName.Models.JsonCommand>" %>
<%: Html.RadioButtonFor(x => x.NickName, Model.NickName) %>

Также обратите внимание, что переключатели обычно привязываются к логическим значениям вместо строк.

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