2014-10-03 15 views
1

我試圖調用js function我的觀點裏:調用javascript函數,當視圖被加載MVC

@model DomainClass.Group 

@{ 
    ViewBag.Title = "Edit"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
    <script language="javascript" type="text/javascript"> 
     document.read = function myFunction() { 
      if (ViewBag.State == "error") { 
       if (confirm("معیار مورد نظر دارای زیر مجموعه های مرتبط است. آیا تمایل به ویرایش دارید ؟")) { } else { 
        history.back(); 
       } 
      } 

     } 
    </script> 

} 

    } 
    @using (Html.BeginForm()) 
    { 
     //my code 
    } 

    @section Scripts { 
     @Scripts.Render("~/bundles/jqueryval") 
    } 

正如你可以看到我的函數名myfunction它取決於viewbag值,但從來沒有它沒有被瀏覽器調用!

我應該在視圖中添加額外的代碼嗎?

任何想法將不勝感激。

此致敬禮

+0

@E一個肯定你只需要一個'$(文件)。就緒(函數(){}'它調用你的函數 – Thewads 2014-10-03 09:19:38

回答

2

您的腳本永遠不會執行,因爲它不會呈現給頁面。所以我將它從服務器標籤中移出並放入HTML標記中。只填寫你需要的參數。但是你有第二個問題。您可以在窗口上將函數簽名爲變量。無論右側的功能名稱如何,它都會被命名爲左側的功能名稱。實際上,右側不應該有名字。那麼第三個也是最後一個問題是,你不會在任何地方調用這個函數。因爲我看到你包括jquery驗證我認爲你還包括jQuery和利用他們的文檔準備功能。

我已經包含了你的函數的更新。還有一些更多的優化空間,但它不包括它們來清楚你的錯誤在哪裏。

@model DomainClass.Group 
@{ 
    ViewBag.Title = "Edit"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<script language="javascript" type="text/javascript"> 
    //use window instead of document 
    window.myFunction = function() { 
     //Try setting the boolean this way 
     var x = @(ViewBag.State == "error" ? "true" : "false"); 
     if (confirm("معیار مورد نظر دارای زیر مجموعه های مرتبط است. آیا تمایل به ویرایش دارید ؟")) { 

     } 
     else { 
      history.back(); 
     } 
    } 

    $(function() { 
     window.myFunction(); 
    }); 
</script> 
@using (Html.BeginForm()) 
{ 
    //my code 
} 
@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 
+0

它不工作,我需要在加載頁面時我的函數被調用。 – 2014-10-03 08:34:11