Я только начал играть с MVC и наткнулся на контрольно-пропускной пункт. Я использую частичное представление в качестве всплывающей подсказки для входа пользователя в систему на заголовке каждой страницы с использованием OpenID. Когда пользователь нажимает на провайдера (аналогично stackoverflow), он аутентифицируется и затем либо возвращается на вызывающую страницу, либо перенаправляет на страницу регистрации. Код работает безупречно под Firefox и Chrome, но взрывается в IE. Параметр «provider» в контроллере всегда отправляется как ноль. Есть ли какая-то ошибка, связанная с публикацией входных имен / значений в IE, или я делаю что-то не так?
Вот как выглядит мой частичный вид openid:
<% using (Html.BeginForm("Authenticate", "Membership", new { ReturnUrl = Request.Url }, FormMethod.Post))
{
if (!Page.User.Identity.IsAuthenticated)
{ %>
<div class="openidProviders">
Log in or join using one of these OpenID providers:
<div class="large buttons">
<div class="provider"><div><%= Html.SubmitImage("provider", "/Content/common/images/google.gif", new { value = "Google" })%></div></div>
<div class="provider"><div><%= Html.SubmitImage("provider", "/Content/common/images/Yahoo.gif", new { value = "Yahoo" })%></div></div>
<div class="provider"><div><%= Html.SubmitImage("provider", "/Content/common/images/AOL.gif", new { value = "AOL" })%></div></div>
<div class="provider"><div><%= Html.SubmitImage("provider", "/Content/common/images/OpenId.gif", new { value = "OpenId" })%></div></div>
</div>
</div>
<% }
}
%>
И логика контроллера здесь:
[AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
public void Authenticate(string provider, string ReturnUrl)
{
// Figure out provider endpoint
// Authentication function calls here
}