Mam witrynę webform ASP.net, z formularzem serwera na stronie głównej, ponieważ wszystkie strony tego wymagają.ASP.net nie wypełnia działania = "" formularza serwera po wydaniu
Podczas debugowania parametru action
jest zapełniany w środowisku wykonawczym wraz z id
, ale po wdrożeniu na moim serwerze z IIS7 nie pojawia się ... ale nadal działa. Nie powoduje problemów z witryną, ale powoduje niepowodzenie sprawdzania poprawności W3C HTML5, ponieważ musi zostać wypełniona.
źródło Debug:
<form method="post" action="index.aspx" id="aspnetForm">
żywo źródło:
<form method="post" action="" id="aspnetForm">
deklaracja Forma masterpage:
<form runat="server">
.. some divs
</form>
wiem tag formularz robi się ID/akcja zdefiniowana itp, ponieważ ASP konfiguruje ustawienia domyślne w środowisku wykonawczym i jest w porządku, chociaż z jakiegoś powodu na moim serwerze. Próbowałem użyć action="<% Path etc %>"
, aby uzyskać nazwę ścieżki, ale nie działa.
Co robię źle? Czy brakuje mi czegoś, czy też po prostu złą praktyką jest użycie formularza na stronie wzorcowej?
Dzięki.
Aktualizacja
Ok, aby rozwiązać ten problem zwrócił uwagę na odpowiedź po prostu ustawić Form.Action na Masterpage Page_Load, wreszcie, że W3C zielone światło!
Uwaga: Używam Intelligencia nagrywarka, ale można wyciągnąć URL przy użyciu Request.Url
public partial class myMasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
Form.Action = Intelligencia.UrlRewriter.RewriterHttpModule.RawUrl;
}
}
Czy zmieniając go z '
Nieznany znacznik serwera "asp: Form". – tutts
'Page.Form.Action = Request.Url.ToString();' pracował dla mnie, bez Intelligencia, wewnątrz Page_Load. – manafire