2012-12-17 31 views
0

我瞭解到,在umbraco中,我們必須使用主模板來定製用戶控件。我有一個自定義表單和一個提交按鈕。我創建了一個控件,一旦按下「submit」按鈕,就會發送一個電子郵件,控件基本上得到了所有的字段,比如名稱,地址,當我創建一個新模板並插入宏時,它就起作用。與主模板使用它,這是行不通的。提交按鈕刷新頁面,但從來就沒有到它發送郵件在umbraco的子模板中使用提交按鈕控件

我的C#的一部分,如果我這樣做

 <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> 
+0

你是什麼意思,自定義控制器?你在Umbraco 4中使用MVC嗎?如果是這樣,怎麼樣? –

+0

我只是在VS2010中創建一個新項目,然後創建一個Web用戶控件並在umbraco中使用該控制器。 – EagleFox

+0

控件與控制器不同。小心使用確切的語言,否則你會發現很難獲得幫助。 –

回答

1

看着它看起來像你缺少的形式標記runat="server"屬性的代碼。

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

通過使用runat=server屬性的表單標籤將與正確的屬性呈現。請注意,您只能在頁面上使用一個runat="server"表單。

有這樣的理念上W3Schools

+0

感謝您的回答蒂姆。 Actualy我的控件有runat標籤。無論哪種方式,它不適用於主頁 – EagleFox

+0

你能提供更多的代碼示例嗎?由於很難說出小片段的問題是什麼? –

+1

@EagleFox,你需要在表單標籤上使用runat =「server」,沒有其他屬性,就像Tim Saunders所說的那樣。 「所有服務器控件都必須出現在

標記中,並且標記必須包含runat =」server「屬性。runat =」server「屬性表示應在服務器上處理表單。」 (http://www.w3schools.com/aspnet/aspnet_forms.asp) –

1

我假設你使用ASP.NET WebForms的一些更多的信息。我有Umbraco網站,我也使用主模板和包含表單的宏。這應該正常工作。 我注意到,你已經設置了被忽略的「action」屬性。此外,「方法」屬性的默認值是「後」,所以你不需要設置這兩個屬性。

ASP.NET Webform總是發佈到自己,所以你可以在這裏刪除「目標」屬性。我不確定刪除這些「不需要的」屬性是否能解決您的問題。

如果不是,你使用嵌套的.NET窗體?這也是拋出錯誤和奇怪的行爲。