繁体   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