我一直在關注本教程Extending Identity Accounts and Implementing Roles。我沒有實現一些我不需要的刪除方法,我將ApplicationUser.userName屬性設置爲一個電子郵件地址。這些是我的項目的限制。發送郵件地址作爲MVC5中的參數導致網站崩潰
除用戶版本和角色分配外,一切正常。
一旦我加載的AccountController MYHOST /的指標帳戶就說明這個
但每當我試着點擊編輯或角色的鏈接,它崩潰古怪,像這樣。 MYHOST /帳號/編輯/用戶名%40gmail.com
我才意識到這個系統是西班牙語,所以我在這裏翻譯錯誤。 錯誤HTTP 404.0 - 不是FOund 您查找的資源已被刪除,名稱已更改或現在不可用。
原因 指定的目錄或文件不是在服務器 URL地址有錯誤類型 的過濾器,自定義模塊,如URLScan的,限制文件訪問
什麼,你可以嘗試 創建Web服務器 上的內容檢查瀏覽器上的URL 檢查錯誤調用的註冊表以查看哪個模塊調用SetStatus。要獲得更多信息,請點擊此處(http://go.microsoft.com/fwlink/?LinkID=66439)
錯誤detiled信息
I'll只是把標籤。
模塊 通知 控制器。 StatisFile(這是不是在我的網站控制器) 錯誤代碼 請求的URL 物理訪問路線 會話啓動方法 會話啓動用戶 通話目錄錯誤的
末
然而,問題是在urland是由URL中的@符號引起的。如果我將URL重寫爲Myhost/Account/Edit?username = username%40gmail.com,則編輯表單會正確加載。
我怎麼能強制參數去作爲查詢字符串參數?或者,有沒有辦法讓服務器以標準的方式瞭解郵件地址?
調用的方法是這樣的
[Authorize(Roles = "Admin")]
public ActionResult Edit(string userName, ManageMessageId? Message = null)
{
var db = new ApplicationDbContext();
var user = db.Users.First(u => u.UserName == userName);
var model = new EditUserViewModel(user);
ViewBag.MessageId = Message;
return View(model);
}
UPDATE 當您在評論中問道,這裏是索引視圖
@model IEnumerable<CAEWebSite.Models.EditUserViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Usuarios</h2>
<p>
@Html.ActionLink("Nuevo usuario", "Register")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.UserName)
</th>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.MiddleName)
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th>
@Html.DisplayNameFor(model => model.SecondLastName)
</th>
<th>
@Html.DisplayNameFor(model => model.Email)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.UserName)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.MiddleName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.SecondLastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.ActionLink("Editar", "Edit", new { id = item.UserName }) |
@Html.ActionLink("Roles", "UserRoles", new { id = item.UserName }) |
@*@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })*@
</td>
</tr>
}
</table>
更新2
這是我RouteConfig類,非常像VS生成它
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
你的表單設置如何?因爲當你使用form和formmethod POST的mvc模型時,理論上你不應該有這個問題。你能告訴我們cshtml代碼嗎? – Silvermind
我剛剛更新了包括帳戶控制器索引完整cshtml在內的問題 –
如果將添加到您的web.config中,它會工作嗎? –