Могу ли я передать значение viewbag в jQuery в mvc2 - PullRequest
2 голосов
/ 29 июня 2011

Мне нужно передать значение в jQuery в представлении, используя viewbag. То, чего я хочу добиться, это передать значение null или некоторое значение, а затем jQuery должен скрыть или показать div в зависимости от значения, переданного, например, как-то ниже:

viewbag.testNumber = null;
 $('#showdiv').hide();
  $('viewbag.testNumber').value == someinteger{

    $("#showdiv").show();
    else
    $("#showdiv").hide();
});
   <div id="showdiv"> Some Calculation </div>

Также я хочу отключить viewbag в представлении, если значение равно нулю, потому что оно дает нулевую ошибку

Ответы [ 5 ]

5 голосов
/ 13 июля 2011

Если вы используете MVC3 (не работает с 2), вы можете легко использовать ViewBag, как показано ниже, но помните два момента, которые легко забыть и могут вызвать головную боль:

  1. Никогда не ставьте точку с запятой в конце @ ViewBag.myVariable
  2. Если вы передаете строку, поставьте "до и после вашего @ ViewBag.myVariable. Например:

Это верно:

$(function () {
    var path = "@ViewBag.helpPath"
    path = "@Url.Content("~/route/action/")" + path;
    $('#help-content').load(path);

});

Однако, если вы используете:

$(function () {
    var path = @ViewBag.helpPath
    path = "@Url.Content("~/route/action/")" + path;
    $('#help-content').load(path);

});

MVC меняет это на:

$(function () {
    var path = c:\\doc\\path
    path = "@Url.Content("~/route/action/")" + path;
    $('#help-content').load(path);

});

Какой JavaScript не может его проанализировать, и в результате получится какая-то ужасная ошибка. Просто то, что я сделал и потратил впустую мое время, чтобы поделиться этим.

2 голосов
/ 29 июня 2011

ViewBag есть только в ASP.NET MVC 3, поэтому вы не можете его использовать, но вы можете использовать ViewData:

    $('#showdiv').hide();
      if ($("#" + '<%=ViewData["testNumber"]').value == someinteger){      
         $("#showdiv").show();
       }
        else {
            $("#showdiv").hide();
        }
    });
       <div id="showdiv"> Some Calculation </div>
1 голос
/ 29 июня 2011

Для вашего MVC2 JavaScript просто напишите переменную прямо, очевидно, вы не можете использовать ViewBag так:

var testNumber = <%:ViewData["VariableName"]%>;
1 голос
/ 29 июня 2011

Вы можете сделать это в своем представлении:

$('#showdiv').hide();
  $('@Viewbag.testNumber').value == someinteger{

    $("#showdiv").show();
    else
    $("#showdiv").hide();
});
   <div id="showdiv"> Some Calculation </div>
1 голос
/ 29 июня 2011

в бритве вы бы просто сделали @ ViewBag.Variable_NameЯ делаю это в своем коде.

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