Post 来自 Entity Framework Identity Scaffolded Razor 页面的提交点击表单值
Post Form Value on Submit Click from Entity Framework Identity Scaffolded Razor Page
在我的 .cshtml 文件中,我有一个适用于我的 MVC 页面的表单:
<form action="@Url.Action("SaveUserEntryAsync", "ConfirmEmail")" method="post">
<label class="modal-body1 col-form-label" id="confirmEmailPageComingSoonModalFormLabel">Modal Error!3</label>
<br />
<textarea class="form-control" name="newsfeedUserEntry" id="newsfeedUserEntry" type="text"></textarea>
<div class="modal-footer">
<button type="submit" id="ComingSoonModalFooterSubmitButton" class="btn btn-success" data-dismiss="confirmEmailPageComingSoonModal">@_loc[Model.Submit]</button>
</div>
</form>
在我的脚手架 cshtml.cs 文件中,我有一个 public async Task<IActionResult> SaveUserEntryAsync(string newsfeedUserEntry)
方法。
<form action="@Url.Action("SaveUserEntryAsync", "ConfirmEmail")" method="post">
不适用于 Razor 页面,我找不到正确的语法,因此我的按钮无法在页面上运行。任何帮助将不胜感激?
对于 Razor Pages,它使用 Razor 页面和页面处理程序。 @Url.Action()
以 MVC 控制器和操作为目标。您可以使用 @Url.Page(string pageName, string pageHandler)
。假设您有 ConfirmEmail.cshtml
和 ConfirmEmail.cshtml.cs
:
<form method="post" action="@Url.Page("ConfirmEmail", "SaveUserEntry")" >
@Html.AntiForgeryToken()
<label class="modal-body1 col-form-label" id="confirmEmailPageComingSoonModalFormLabel">Modal Error!3</label>
<br />
<textarea class="form-control" name="newsfeedUserEntry" id="newsfeedUserEntry" type="text"></textarea>
<div class="modal-footer">
<button type="submit" id="ComingSoonModalFooterSubmitButton" class="btn btn-success" data-dismiss="confirmEmailPageComingSoonModal">aaa</button>
</div>
</form>
或者您可以像下面这样使用 asp-page
和 asp-page-handler
:
<form asp-page="ConfirmEmail" asp-page-handler="SaveUserEntry" method="post">
<label class="modal-body1 col-form-label" id="confirmEmailPageComingSoonModalFormLabel">Modal Error!3</label>
<br />
<textarea class="form-control" name="newsfeedUserEntry" id="newsfeedUserEntry" type="text"></textarea>
<div class="modal-footer">
<button type="submit" id="ComingSoonModalFooterSubmitButton" class="btn btn-success" data-dismiss="confirmEmailPageComingSoonModal">aaa</button>
</div>
</form>
注意:请求中不需要添加Async后缀url.
对于处理程序,应该是OnPostXXX
(XXX应该是处理程序名称):
public class ConfirmEmailModel : PageModel
{
public void OnGet()
{
}
public async Task<IActionResult> OnPostSaveUserEntryAsync(string newsfeedUserEntry)
{
return Page();
}
}
参考:
首先,更改 @Url.Action
而不是像@Rena 所说的那样必须使用 @Url.Page
或直接使用 asp-page
。并更改您的代码:-
<button type="submit" id="ComingSoonModalFooterSubmitButton" class="btn btn-success" data-dismiss="confirmEmailPageComingSoonModal">aaa</button>
到
<input type="submit" id="ComingSoonModalFooterSubmitButton" data-dismiss="confirmEmailPageComingSoonModal" value=@_loc[Model.Submit] class="btn btn-success/>
希望它能解决您的问题。
在我的 .cshtml 文件中,我有一个适用于我的 MVC 页面的表单:
<form action="@Url.Action("SaveUserEntryAsync", "ConfirmEmail")" method="post">
<label class="modal-body1 col-form-label" id="confirmEmailPageComingSoonModalFormLabel">Modal Error!3</label>
<br />
<textarea class="form-control" name="newsfeedUserEntry" id="newsfeedUserEntry" type="text"></textarea>
<div class="modal-footer">
<button type="submit" id="ComingSoonModalFooterSubmitButton" class="btn btn-success" data-dismiss="confirmEmailPageComingSoonModal">@_loc[Model.Submit]</button>
</div>
</form>
在我的脚手架 cshtml.cs 文件中,我有一个 public async Task<IActionResult> SaveUserEntryAsync(string newsfeedUserEntry)
方法。
<form action="@Url.Action("SaveUserEntryAsync", "ConfirmEmail")" method="post">
不适用于 Razor 页面,我找不到正确的语法,因此我的按钮无法在页面上运行。任何帮助将不胜感激?
对于 Razor Pages,它使用 Razor 页面和页面处理程序。 @Url.Action()
以 MVC 控制器和操作为目标。您可以使用 @Url.Page(string pageName, string pageHandler)
。假设您有 ConfirmEmail.cshtml
和 ConfirmEmail.cshtml.cs
:
<form method="post" action="@Url.Page("ConfirmEmail", "SaveUserEntry")" >
@Html.AntiForgeryToken()
<label class="modal-body1 col-form-label" id="confirmEmailPageComingSoonModalFormLabel">Modal Error!3</label>
<br />
<textarea class="form-control" name="newsfeedUserEntry" id="newsfeedUserEntry" type="text"></textarea>
<div class="modal-footer">
<button type="submit" id="ComingSoonModalFooterSubmitButton" class="btn btn-success" data-dismiss="confirmEmailPageComingSoonModal">aaa</button>
</div>
</form>
或者您可以像下面这样使用 asp-page
和 asp-page-handler
:
<form asp-page="ConfirmEmail" asp-page-handler="SaveUserEntry" method="post">
<label class="modal-body1 col-form-label" id="confirmEmailPageComingSoonModalFormLabel">Modal Error!3</label>
<br />
<textarea class="form-control" name="newsfeedUserEntry" id="newsfeedUserEntry" type="text"></textarea>
<div class="modal-footer">
<button type="submit" id="ComingSoonModalFooterSubmitButton" class="btn btn-success" data-dismiss="confirmEmailPageComingSoonModal">aaa</button>
</div>
</form>
注意:请求中不需要添加Async后缀url.
对于处理程序,应该是OnPostXXX
(XXX应该是处理程序名称):
public class ConfirmEmailModel : PageModel
{
public void OnGet()
{
}
public async Task<IActionResult> OnPostSaveUserEntryAsync(string newsfeedUserEntry)
{
return Page();
}
}
参考:
首先,更改 @Url.Action
而不是像@Rena 所说的那样必须使用 @Url.Page
或直接使用 asp-page
。并更改您的代码:-
<button type="submit" id="ComingSoonModalFooterSubmitButton" class="btn btn-success" data-dismiss="confirmEmailPageComingSoonModal">aaa</button>
到
<input type="submit" id="ComingSoonModalFooterSubmitButton" data-dismiss="confirmEmailPageComingSoonModal" value=@_loc[Model.Submit] class="btn btn-success/>
希望它能解决您的问题。