C# 在umbraco的子模板中使用submit按钮控件

C# 在umbraco的子模板中使用submit按钮控件,c#,templates,controls,submit,umbraco,C#,Templates,Controls,Submit,Umbraco,我了解到在umbraco中,我们必须为自定义用户控件使用主模板。我有一个自定义表单和一个提交按钮。我创建了一个控件,一旦按下“提交”按钮,它就会发送一封电子邮件。该控件基本上会获取所有字段,如名称、地址。当我创建一个新模板并插入宏时,它就会工作 但是,当我尝试将它与主模板一起使用时,它不起作用。submit按钮刷新页面,但从不转到我的c#part,在那里它发送邮件 如果我这样做 <form name="myform" target="_self" method="post" ac

我了解到在umbraco中,我们必须为自定义用户控件使用主模板。我有一个自定义表单和一个提交按钮。我创建了一个控件,一旦按下“提交”按钮,它就会发送一封电子邮件。该控件基本上会获取所有字段,如名称、地址。当我创建一个新模板并插入宏时,它就会工作

但是,当我尝试将它与主模板一起使用时,它不起作用。submit按钮刷新页面,但从不转到我的c#part,在那里它发送邮件

如果我这样做

     <form name="myform" target="_self" method="post" action="index">

它会转到索引页,但不会发送电子邮件

但是它可以在一个干净的或新的模板上工作。有没有办法在umbraco 4中使用自定义控件和主模板 编辑- 这就是我使用宏的方式

<form name="myform" target="_self" method="post" action="index">    
   <umbraco:Macro Alias="sendMail" runat="server"></umbraco:Macro>
</form>

查看代码,您似乎缺少表单标记上的
runat=“server”
属性

<form name="myform" runat="server">    
   <umbraco:Macro Alias="sendMail" runat="server"></umbraco:Macro>
</form>

通过使用
runat=server
属性,表单标签将以正确的属性呈现。注意,页面上只能有一个
runat=“server”
表单


有关此概念的更多信息,请访问我假设您使用的是ASP.NET WebForms。我有一些Umbraco网站,其中我还使用了主模板和包含表单的宏。这应该可以正常工作。 我注意到您设置了被忽略的“action”属性,“method”属性的默认值是“post”,因此您不需要同时设置这两个属性

ASP.NET Web表单总是向自身发布,因此您可以在此处删除“target”属性。我不确定删除这些“不需要的”属性是否能解决您的问题


如果不是,您是在使用嵌套的.NET表单吗?这也会引发错误和奇怪的行为。

您是什么意思,自定义控制器?您是在Umbraco 4中使用MVC吗?如果是,如何使用?我只是在VS2010中创建一个新项目,然后创建一个web用户控件,并在Umbraco控件中使用该控制器与控制器不同。可以拒绝使用精确的语言,否则你会发现很难获得帮助。谢谢Evan…我将编辑我的帖子,以获得你的答案Tim。实际上,我的控件带有runat标记。无论哪种方式,它都不能与MasterPage一起工作。你能提供更多的代码示例吗?因为很难从这些小片段中分辨问题是什么?@EagleFox,你需要一个正如Tim Saunders所说,“所有服务器控件都必须出现在一个标记中,并且标记必须包含runat=“server”属性。runat=“server”属性表示表单应该在服务器上处理。“()谢谢大家…我的主模板上的表单标签把我搞糊涂了…现在可以正常工作了。。。