カスタムルートを作成する必要がありますが、問題が残っています。 私のルートカスタムルートの問題
routes.MapRoute(
name: "IndexByUserName",
url: "{controller}/{action}/{username}",
defaults: new { controller = "Profile", action = "Edit", username = UrlParameter.Optional }
);
であると私には、例えば、URL .../Profile/Edit/UserTest
に行くとき、私のパラメータusername
がnull
あるので、私は、404 Not Foundエラーを取得します。私の行動は次のようになります
[Authorize]
[HttpGet]
public ActionResult Edit(string username)
{
ApplicationUser profile = db.Users.Find(username);
if (profile == null)
{
return HttpNotFound();
}
return View(profile);
}
[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id, Nickname, FirstName, LastName, SecondName, City, Address, Description, Skype, TelephoneNum")] ApplicationUser profile)
{
if (ModelState.IsValid)
{
var user = db.Users.Find(profile.Id);
if (user == null)
{
return HttpNotFound();
}
user.UserName = User.Identity.GetUserName();
user.FirstName = profile.FirstName;
user.SecondName = profile.SecondName;
user.LastName = profile.LastName;
user.SocialNetworks = profile.SocialNetworks;
user.Address = profile.Address;
user.City = profile.City;
user.TelephoneNum = profile.TelephoneNum;
user.Description = profile.Description;
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return Redirect("/Profile/Index/" + User.Identity.Name);
}
return View(profile);
}
私はどこに問題があるのか分かりません。
私はデフォルトルートを削除しません。 –
あなたはそうする必要はありません。しかし、デフォルトルートを削除していないので、ルートが機能していない理由はおそらくデフォルトがあなたのものの代わりに選択されているためです。私がリンクした答えは、デフォルト経路を削除せずに経路を使用する方法を指定しています。 – Kolichikov
私はあなたの答えに入れたリンクを見ましたが、私がデフォルトルートの前に私のカスタムルートを置いたときには、何のことも起こりません。 : –