2014-02-02 8 views
0

Я написал за кодом. , но Viewbag.message покажет null в предупреждающем сообщении .myvar - это переменная. Я использовал точку останова, myvar будет установлен на Viewbag.message правильно. но в нём будет показано значение null.Viewbag is null in alert

  <script src="~/Scripts/jquery-1.7.1.js"></script> 
     <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script> 

    @{string myvar = ViewBag.AlertMessage;} 

    @using (Ajax.BeginForm("action", "controller", new AjaxOptions { HttpMethod = "Post", OnSuccess = "Messsage" })) 
        { 

    <script type="text/javascript"> 

    function Messsage() { 

    alert('@ViewBag.AlertMessage'); //infact, it shows alert(''); 
    } 


    </script> 
+0

Я бы взять на себя вызов Ajax из BeginForm расчищает ViewBag для данного конкретного вида или иметь его внутри тега формы также может быть очистка его значения. Что произойдет, если вы вызываете предупреждение («@ myvar»); вместо? Кроме того, попробуйте переместить JavaScript за пределами Ajax.BeginForm – Tommy

ответ

0
<script type="text/javascript"> 
function Messsage() { 
    alert('@myvar'); // should show "hello there" 
} 
</script> 
@using (Ajax.BeginForm("AjaxAction", "Home", new AjaxOptions { HttpMethod = "Post", OnSuccess = "Messsage" })) 
{ 

    <script type="text/javascript"> 
     function Messsage() { 

      alert("@ViewBag.AjaxMessage"); 
     } 
    </script> 

    <input type="submit" value="Submit" /> 

} 
0

- ViewBag.AlertMessage определяется в действии контроллера?

вы можете заменить данные по

@{string myvar = "hello there !";} 

<script type="text/javascript"> 
    function Messsage() { 
     alert('@myvar'); // should show "hello there" 
    } 
</script> 

или определить элемент viewbag в методе действий за результат

public ActionResult Index() { 
    ViewBag.AlertMessage = "hello there !" 
    return View(); 
} 
+0

да, я определен в контроллере. ViewBag.AlertMessage должен перейти от контроллера. потому что он будет меняться непрерывно. – neda

-1

Попробуйте установить значение для ViewBag.AlertMessage в действии контроллера, который возвращает вид, на котором вы определили форму Ajax.Begin.

например

public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; 
      ViewBag.AlertMessage = "AjaxMessage."; 

      return View(); 
     } 
    } 

на Индексный я поместил следующий код вызова AjaxAction на главном контроллере.

@using (Ajax.BeginForm("AjaxAction", "Home", new AjaxOptions { HttpMethod = "Post", OnSuccess = "Messsage" })) 
    { 

     <script type="text/javascript"> 
      function Messsage() { 

       alert("@ViewBag.AjaxMessage"); 
      } 
     </script> 

     <input type="submit" value="Submit" /> 

    } 

 Смежные вопросы

  • Нет связанных вопросов^_^