Не удается сериализовать элементы управления Telerik MVC в вызове Ajax - PullRequest
0 голосов
/ 07 сентября 2011

У меня проблемы с передачей модели из моего вида через Ajax-вызов на мой контроллер. Все свойства модели, которые имеют элементы управления Telerik html «Для», не сохраняются в модели. Единственный способ получить доступ к этим значениям в контроллере - это использовать Request ["control_name"]. Все остальные стандартные элементы управления, такие как input type = text serialize, просто отлично. Что я делаю неправильно?

Вот мой вызов ajax:

function ImportLogFile() {

    $.ajax({
        url: '/Job/ImportLogFile',
        type: 'POST',
        data: $("form").serialize(),
        success: function (data)
        {
            $('body').css('cursor', 'auto');
            alert("Word Counts imported.");
        },
        error: function (xhr, status, error) 
        {
            alert(status + ": " + strip(xhr.responseText).substring(0, 1000) + "...");
        }
    });
}

Контроллер:

[HttpPost]
public ActionResult ImportLogFile(tblJobTask model)
{
    ...
}

Просмотр:

@model viaLanguage.Jams.Data.tblJobTask

<html>
<head></head>
<body>

@using (Html.BeginForm())
{

    <label class="editorLabel">CAT Tool Type:</label>
        @{ Html.Telerik().ComboBoxFor(model => model.CatToolID)
                .Name("JobTask_CatToolID")
                .BindTo(new SelectList((IEnumerable)ViewData["CatTools"], "CatToolID", "Description"))
                .HtmlAttributes(new { style = "width:220px;" });
         }

<input id="btnImport" type="button" onclick="ImportLogFile();"  />

}

</body>
</html>

1 Ответ

2 голосов
/ 07 сентября 2011

я верю .Name("JobTask_CatToolID") является источником проблемы.когда вы изменяете атрибут Name в поле со списком на что-то отличное от имени свойства, оно не будет автоматически привязываться к свойству с помощью связывателя модели.ModelBinder просто просматривает опубликованные ключи, а затем ищет подходящие свойства в модели и заполняет их соответствующим образом.и когда связыватель находит ключ JobTask_CatToolID, он, вероятно, не находит подходящего свойства в модели и, следовательно, не присваивается никакому свойству.Вы можете проверить это, пропустив метод Name(---), а затем отправив данные на контроллер.

...