【问题标题】:DNN Form not processing correctly with ASP.NET c#DNN 表单无法使用 ASP.NET c# 正确处理
【发布时间】:2014-07-24 17:17:31
【问题描述】:

我在使用 Dot Net Nuke 自定义表单时遇到了问题。表单有一些奇怪的行为。好吧,我相信代码中的皮肤本身很奇怪。我在 c# 后面有提交按钮代码,可以在触发时重定向到另一个页面,在函数末尾使用代码“response.redirect()”。但是,它会在页面中未指定任何操作的情况下重定向回自身。我意识到当我查看源代码时,它会自动给出一个返回自身的动作。

皮肤本身的代码如下:

<dnn:Form id="Form" runat="server" ENCTYPE="multipart/form-data" >

按钮代码:

<asp:button id="btnClear2" cssclass="dnnSecondaryAction " runat="server" resourcekey="Submit"
  onclick="btnSubmit_Click" />

处理后的表单在浏览器中显示为:

<form name="Form" method="post" action="/onlineorderform.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="Form" enctype="multipart/form-data">

如果网站崩溃,我无法更改或删除 dnn 代码。 dnn 代码似乎会覆盖我的 c# response.redirect 代码。

【问题讨论】:

    标签: c# jquery asp.net forms dotnetnuke


    【解决方案1】:

    您不能在 DNN 中使用表单,因为 DNN 页面本身就是一个表单。 查看 editUrl() 函数以更改页面发布到的位置。我目前正在尝试自己解决这个问题。

    进一步扩展:cmdblah.Click 事件显然绑定到页面上的按钮控件。

    protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            cmdblah.Click += cmdblah_Click;
    

    }

            private void cmdblah_Click(object sender, EventArgs e)
        {
            string Testing = EditUrl("AddNewClient");
            Response.Redirect(Testing);
    
            //throw new NotImplementedException();
    
        }
    

    在我的情况下,重定向在 DNN 上执行另一个页面而不发送任何内容,但是,我可以看到通过您添加的 url 中的参数或其他方式发送信息......如果您遇到这种情况,请返回我。 :-) 我还没有走那么远。我想它无论如何都会将帖子数据发送到新页面。

    希望对您有所帮助。

    【讨论】:

    • 更新了评论。 stackoverflow 新手,不知道有没有更新消息。
    • 我之前尝试过 response.redirect 方法,但它对我不起作用。我能够将表单中的所有用户输入发送到发送出去的电子邮件,以及他们上传的任何文件到服务器上。这很烦人,我无法让它工作。我什至尝试了 Response.Redirect(DotNetNuke.Common.Globals.NavigateURL());并在参数中输入tabID,还是不行。
    • 我认为回发中存在错误。但是一旦找到解决方案,我会发布。
    【解决方案2】:

    由于站点中的整个页面都是一个表单,因此您不能在页面内创建表单。

    我过去对此的解决方案是调用 javascript 来更改单击按钮/链接时的表单操作。

    问题在于它发送视图状态和所有 dnn 特定的 suff 以及预期的字段。

    在我的最新项目中,我在要发送和查询的表单字段上使用了一个选择器类来序列化和发布数据。最后效果很好。

    编辑:

    下面是一些代码,可以让您序列化部分表单并发送它

            $.get('processor URL' , 
            $('.ClassAddedToFieldsYouWantToSend').serialize(), 
            function(data) { alert("do something with the response"; }
    

    【讨论】:

    • 我的问题是,如果我使用 JavaScript 方法来更改点击时的表单操作,但是当我触发按钮时,我在按钮后面有 C# 代码来执行特定任务,例如发送电子邮件, 哪个先执行? JavaScript 或 C#
    • 或者有没有办法在C#后面调用JavaScript?
    • 如果您更改了点击,您将在提交时离开页面。您可以使用查询进行序列化,我会在稍后更新答案
    猜你喜欢
    • 2014-09-14
    • 2012-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多