У меня есть сайт веб-форм ASP.net с серверной формой на главной странице, поскольку это требуется для всех страниц.
При отладке параметр action
заполняется во время выполнения вместе с id
, но при развертывании на моем сервере с IIS7 он не появляется ... но все еще работает. Это не вызывает проблем с сайтом, но из-за этого моя проверка W3C HTML5 не выполняется, поскольку его необходимо заполнить.
Источник отладки:
<form method="post" action="index.aspx" id="aspnetForm">
Живой источник:
<form method="post" action="" id="aspnetForm">
Объявление формы на главной странице:
<form runat="server">
.. some divs
</form>
Я знаю, что тег формы не имеет определенного идентификатора / действия и т. Д., Потому что ASP настраивает значение по умолчанию во время выполнения, и это нормально, хотя для некоторых причина, по которой он портит мой сервер. Я пробовал использовать action = "<% Path etc%>"
, чтобы получить имя пути, но это не работает.
Что я делаю не так? Я что-то упустил или использовать форму на мастер-странице - просто плохая практика?
Спасибо.
Обновление
Хорошо, чтобы решить проблему, указанную в ответе, я просто установил Form.Action на Masterpage Page_Load, наконец-то получил зеленый свет W3C!
Примечание : я использую Intelligencia Rewriter, но вы можете получить URL-адрес с помощью Request.Url
public partial class myMasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
Form.Action = Intelligencia.UrlRewriter.RewriterHttpModule.RawUrl;
}
}