簡體   English   中英

ASP.NET MVC 2 jQuery對話框回發問題

[英]ASP.NET MVC 2 jquery dialog postback issue

我是MVC的新手,我希望通過將登錄框放置在母版頁上,使其在整個站點的jquery對話框中正常工作。

我已經用對話框div包裝了logOn.aspx表單,並添加了一個按鈕來打開對話框和一些jq

<button id="show-sign-in">Sign In</button>  
<script type="text/javascript">
$(function () {
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
modal: true
});
$('#show-sign-in').click(function () {
$('#dialog').dialog('open');
});
</script>
<div id="dialog" title="User Login">...</div>

問題:

  1. 如果我將頁面包含在具有RenderPartial的母版中,則控制器的ActionResult將無法捕獲提交,除非該URL中包含/ Account。

    Html.RenderPartial(“〜/ Views / Account / LogOn.aspx”);

  2. 如果我將其與Ajax請求一起使用(在下面),則提交可以順利進行,但是,如果登錄嘗試無效,則該頁面將重定向到實際的LogOn頁面(我想將它們返回到對話框)。

     <script type="text/javascript"> $(document).ready(function () { $.ajax({ url: "/Account/LogOn", cache: false, success: function (html) { $("#logindisplay").append(html); } }); });</script> 

最重要的是,這是我在Web表單中對ascx所做的很多工作,我發現遍歷ajax獲取和許多js來做同樣的事情很煩人,我完全犯錯了嗎? 有任何想法嗎?

您是否嘗試過將LogOn.aspx移到“共享”文件夾? 如果您希望在多個控制器之間共享視圖,那應該是在那里? 如果要部分渲染,則還應該從ViewUserControl派生而不是默認的ViewPage。 您可能還需要更新默認的BeginForm簽名以指定它需要轉到帳戶控制器和登錄操作,因為您不再直接從LogOn()操作本身呈現它。

一種構造方法是擁有一個LogOn視圖,該視圖呈現您的部分(共享)登錄表單(LogonForm.ascx)。 當登錄請求通過AJAX請求進入時,只需將表單呈現為局部。 如果來自正常請求,則呈現整個視圖。 您的表單應指定它顯式回發到帳戶/登錄操作。

我很難確切地了解您要做什么,但是如果您只需要登錄的模式對話框,那么如果您向AJAX GET和POST中添加一些查詢字符串參數(例如“?modal =真正”。 因為這就是您想要的-您希望您的登錄表單能夠正常工作並通過模式對話框運行。 並且當通過模式對話框進行工作時,它還應該回發到模式,例如/ Account / LogOn /?modal = true。

同樣,當您使用ASP.NET Forms身份驗證登錄時,我認為沒有回發也無法做到。 因此,即使您確實使用了模式對話框,在關閉它之后,仍然需要刷新頁面。

至少這就是我當前項目的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM