Проблема с преобразованием в синтаксис бритвы для привязки модели динамических текстовых полей, генерируемых jQuery. - PullRequest
0 голосов
/ 26 февраля 2012

Мне нужно привязать модель данных из текстовых полей, динамически генерируемых на стороне клиента (используя плагин jQuery .tmpl), чтобы данные были доступны в моих контроллерах MVC3. Я нашел код для этого по следующей ссылке:

http://www.progware.org/Blog/post/ASPNET-MVC-Binding-to-Listse28093Enumerables-on-POST-with-JQuery.aspx

В этой статье обсуждается несколько подходов к рабочему исходному коду. Последний подход - это то, что я хочу, и это работает. Но, вероятно, он использует движок представления веб-форм (внутри блоков JavaScript) или только теги на стороне сервера. Я был бы признателен, если бы кто-нибудь помог мне заставить его работать с синтаксисом бритвы.

В частности, я надеялся получить синтаксис бритвы для следующего блока в коде:

<script type="text/javascript">
    <%int idx=0;
      foreach (var c in Model){ 
        ViewData["key"]=idx; %>
        $("#ClientTemplate").tmpl([{FirstName : "<%: c.FirstName %>",  
                                    LastName : "<%:c.LastName %>" ,
                                    idx: <%:idx.ToString()     %>}]).appendTo("#ExistingClients");
        <% idx++;%>
    <%} %>
</script>
<script type="text/javascript">
    function removeClient(DivName) {$("#" + DivName).remove();}
    var num = <%:Model.Count() %>;
    $("#btnAddNewClient").click(function () {
        $("#ClientTemplate").tmpl([{FirstName : "",  
                                    LastName : "" ,
                                    idx: num}]).appendTo("#NewClients");
        num++;
    });
</script>

Ответы [ 2 ]

0 голосов
/ 27 июня 2012

Я не смог заставить его работать так, как я думал ранее. В итоге я создал объект javascript с теми же именами свойств, что и мой объект C #, а затем отправил объект в метод контроллера с помощью вызова jquery .ajax.

0 голосов
/ 26 февраля 2012

Примерно так может работать:

<script type="text/javascript">
    @{
        int idx = 0;
        foreach (var c in Model)
        {
            ViewData["key"] = idx; 

            <text>
                $("#ClientTemplate").tmpl([{FirstName : "@c.FirstName",  
                    LastName: "@c.LastName" ,
                    idx: @idx.ToString()}]).appendTo("#ExistingClients");        
            </text>

            idx++;
        } 
    }
</script>

<script type="text/javascript">
    function removeClient(DivName) {$("#" + DivName).remove();}
    var num = @Model.Count();
    $("#btnAddNewClient").click(function () {
        $("#ClientTemplate").tmpl([{FirstName : "",  
                                    LastName : "" ,
                                    idx: num}]).appendTo("#NewClients");
        num++;
    });
</script>

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

...