![](/img/trans.png)
[英]I keep getting this error on my discord bot: 'HTTPError [AbortError]: The user aborted a request.'
[英]Getting 'An unhandled exception was generated during the execution of the current web request.' Error in my MVC UserManagementController
當我執行項目並嘗試訪問網頁AccountSettings
,出現錯誤消息
當前Web請求的執行期間生成了未處理的異常。 可以使用下面的異常堆棧跟蹤來標識有關異常的來源和位置的信息。
下面是我的UserManagementController
代碼
public class UserManagementController : Controller
{
private UserDatabaseEntities db = new UserDatabaseEntities();
public ActionResult AccountSettings(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Login login = db.Logins.Find(id);
if (login == null)
{
return HttpNotFound();
}
return View(login);
}
public ActionResult AccountSettings([Bind(Include = "UserID,Password")] Login login)
{
if (ModelState.IsValid)
{
db.Entry(login).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(login);
}
}
除“編輯”和“帳戶設置”外,其他所有頁面均運行正常,但是它們執行類似的功能,但是當我設置了用戶組時,只有“管理員”才能訪問“編輯”作為主要用戶創建頁面,並且“帳戶設置”將是用戶的唯一命令更改后端的密碼。
這是我嘗試運行頁面時收到的錯誤消息
[AmbiguousMatchException:控制器類型'UserManagementController'上的當前對操作'AccountSettings'的請求在以下操作方法之間不明確:System.Web.Mvc.ActionResult AccountSettings(System.Nullable`1 [System.Int32])類型為WebSpares3.Views .UserManagementController System.Web.Mvc.ActionResult AccountSettings(WebSpares3.Models.Login),類型為WebSpares3.Views.UserManagementController]
此消息非常簡單:
在以下操作方法之間,當前對控制器類型“ UserManagementController”的操作“ AccountSettings”請求不明確
默認情況下,控制器操作方法使用HttpGet
,在這種情況下, AccountSettings
操作方法定義是模棱兩可的,因為存在兩個具有相同名稱和相同HTTP方法的方法。 因此,第二個AccountSettings
控制器需要HttpPostAttribute
來消除請求的歧義:
[HttpPost]
public ActionResult AccountSettings([Bind(Include = "UserID,Password")] Login login)
{
if (ModelState.IsValid)
{
// save changes & redirect
}
return View(login);
}
請注意,在不提供id
參數的情況下直接訪問AccountSettings
GET方法時,此塊將返回HTTP 400:
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
建議改為返回視圖:
public ActionResult AccountSettings(int? id)
{
if (id == null)
{
return View();
}
// other logic
}
注意:與BindAttribute
,首選使用強類型的viewmodel,因此您可以輕松控制POST方法:
模型
public class Login
{
[Required]
public string UserID { get; set; }
[Required]
public string Password { get; set; }
}
控制者
[HttpPost]
public ActionResult AccountSettings(Login login)
{
if (ModelState.IsValid)
{
// save changes & redirect
}
return View(login);
}
視圖
@model Login
@Html.TextBoxFor(m => m.UserID)
@Html.ValidationMessageFor(m => m.UserID)
@Html.TextBoxFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
<input type="submit" value="Login" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.