私は裏話に私の舌を保持し、単に質問に答えるつもりです:
だから、あなたは私が見つけた二つの主要なものを持っています。 1つはCSHTMLです(ただし、現在の特定のエラーの直接の原因ではありません)。 CSHTMLの提案については、以下を参照してください(特に、C#アクションの修正後にさらに問題が発生した場合)
まず、コントローラ。 UserReset
アクションを見ると、[HttpPost]
という装飾が施されています。あなたが言ったように、編集ページを開くことはできません。これは、ページの編集アクションが存在しないためです(たとえば、要求されたURLで[HttpGet]
アクション)。これはあなたが必要としているものです:
public class TSTUsersController : IController
{
...
//You need this action to process the get request
[HttpGet]
public ActionResult UserReset()
{
return View("UserReset"); //return the edit form html to the user
}
//this method will handle the button click
[HttpPost]
public ActionResult UserReset(String email)
{
if(ModelState.IsValid)
{
//save the information to the database
//direct the user to some sort of confirmation page
return RedirectToAction("Index", "Home");
}
//return the form with the error messages
return View("UserReset", email);
}
...
}
あなたが完全に誤解しているHTMLフォームの提出です。ヘルパーを使用して
<form
method="POST"
action="@Url.Action("UserReset", 'TSTUsers")" //e.g. POST /TSTUsers/UserReset
... >
...
<button>Submit</button>
</form>
または、::
@using(Html.BeginForm("UserReset", "TSTUsers", FormMethod.Post))
{
<button>Submit</button>
}
さて、これは指定されたアクションへの投稿です
<form></form>
要素は、主に2つのパラメータ、あなたが不足しているがあります。パラメータを追加するには、変更しないパラメータを使用します(ユーザーがメールを入力できないなど).2つのオプションがあります。ヘルパーを使用して、
<form
action="@Url.Action("UserReset", 'TSTUsers", new { email = Model.Email })"
//e.g. POST /TSTUsers/[email protected]
... >
...
<button>Submit</button>
</form>
または:あなたは代わりにそうように、(それがあなたにとって重要ならば、ユーザは、非AJAXポスト時に次のURLを参照してくださいすることを、予めご了承ください)パラメータを指定するためにあなたのaction
パラメータを変更することができます:あなたが(何らかの理由で)リクエストからURLパラメータを隠すことを好むかどう
@using(Html.BeginForm("UserReset", "TSTUsers", FormMethod.Post, new { email = Model.Email }))
{
<button>Submit</button>
}
さて、あなたは代わりにhidden
のtype
で、input
を追加します。
<form
action="@Url.Action("UserReset", 'TSTUsers")" //e.g. "POST /TSTUsers/UserReset
... >
<input type="hidden" name="email" value="@Model.Email"
<button>Submit</button>
</form>
を
または、ヘルパーを使用して:
@using(Html.BeginForm("UserReset", "TSTUsers", FormMethod.Post))
{
@Html.Hidden("email", Model.Email)
<button>Submit</button>
}
**注:ボタンは、編集ページの残りの部分として、別々のhtml.beginformの内側にあります。これが有用かどうかはわかりませんが、問題の一部になっているようです –