我目前正在開發ASP.NET MVC3網站。MVC3 - Form + POST =空參數
我有一個簡單的身份驗證表單,綁定在一個簡單的viewmodel上。在本地調試時,一切正常。
但是該網站也必須支持Apache + monomod。以下是我遇到的奇怪行爲:具有相同請求和參數的相同表單無法正常工作。
更多細節:
視圖模型:
/// <summary>
/// Form authentication info
/// </summary>
public class LogOnModel
{
/// <summary>
///
/// </summary>
[DisplayName("Username")]
public string UserName { get; set; }
/// <summary>
///
/// </summary>
[DisplayName("Password")]
public string Password { get; set; }
/// <summary>
///
/// </summary>
[DisplayName("Remember me?")]
public bool RememberMe { get; set; }
/// <summary>
/// Targeted URL
/// </summary>
public string Target { get; set; }
/// <summary>
///
/// </summary>
public LogOnModel()
{
}
}
視圖的主要部分,頁面,用戶可以輸入用戶名和密碼:
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<Website.Areas.Public.Models.LogOnModel>" %>
<p>
Please enter your username and password to continue.
</p>
<% using (Html.BeginForm())
{ %>
<%= Html.ValidationSummary(true, "Authentication failed.")%>
<p>
<%= Html.ActionLink("I forgot my password","PasswordRecovery","Home") %>
</p>
<div>
<fieldset>
<div class="editor-label">
<%= Html.LabelFor(m => m.UserName) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(m => m.UserName) %>
<%= Html.ValidationMessageFor(m => m.UserName)%>
</div>
<div class="editor-label">
<%= Html.LabelFor(m => m.Password)%>
</div>
<div class="editor-field">
<%= Html.PasswordFor(m => m.Password) %>
<%= Html.ValidationMessageFor(m => m.Password) %>
</div>
<div class="editor-field">
<%= Html.CheckBoxFor(m => m.RememberMe) %>
Remember me
</div>
<p>
<input type="submit" value="Connect me!" />
</p>
</fieldset>
</div>
<% } %>
和控制器,接收認證信息:
[HttpPost]
public ActionResult LogOn(LogOnModel model)
{
string username = model.UserName;
string password = model.Password;
//On Apache, username & password are empty
...
}
正如我在評論中說,用戶名密碼&是空的。在本地的ASP.NET調試服務器上一切正常,並使用Fiddler我可以看到身份驗證的請求包含表單數據(用戶名,密碼等)。
任何想法爲什麼綁定似乎不工作? 謝謝。
嗯我可以使用HttpContext.Request.Form [「UserName」],等等的值...但它似乎不是很乾淨,我... – Valryon