簡體   English   中英

為什么我的 HttpPost 方法沒有從我的 Asp.Net Core Razor 頁面觸發?

[英]Why is my HttpPost method not firing from my Asp.Net Core Razor page?

此處是 Asp.Net Core Razor 的新手。

我正在嘗試連接一個簡單的按鈕以保存在我的 Razor 頁面上。 我的 [HttpPost]SaveDocument() 方法沒有在點擊“保存”按鈕時觸發。 相反,Index() 方法正在觸發。 我不確定我錯誤地連接了什么。

這是我的 Razor 頁面定義的片段:

@model SampleViewModel
@{ Layout = "_DevExtremeLayout";
    ViewBag.Title = "Sampe Title";}

<form method="post">
    <div id="InputFormPanel" class="InputFormPanel">
        <partial name="@Model.ChildViewName" model="@Model.ChildViewModel" />
    </div>
    <div class="row">
        <div class="col-md-3">
            <input id="ApprovedBy" class="form-control" asp-for="ApprovedBy" />
        </div>
        <div class="col-md-2">
            <input class="form-control" asp-for="Title" />
        </div>
    </div>

    <button id="SaveButton" type="submit" >Save Form</button>               
</form>

這是我的模型:

public class SampleViewModel
{
    public object ChildViewModel { get; set; }
    public string ChildViewName { get; set; }
    public string ApprovedBy { get; set; }
    public string Title { get; set; }
}

這是我的控制器的一個片段:

public class SampleController : Controller
{
    public async Task<IActionResult> Index(Guid documentTypeId)
    {
        SampleViewModel viewModel = new SampleViewModel()
        {
        };
        return View(viewModel);
    }

    [HttpPost]
    public async Task<IActionResult> SaveDocument(SampleViewModel sampleViewModel)
    {
        return RedirectToAction("Index");
    }
}

作為新手,我想我在這里做了一些愚蠢的事情/遺漏了一些東西。 我在這里做錯了什么?

如果您沒有在 HTML 表單上分配 action 屬性,它會將請求發布到您當前所在的同一頁面/路由,在這種情況下是您的索引操作。

因此,如果您添加這樣的操作屬性:

<form method="post" action="SaveDocument">

它應該開始工作。 或者,您也可以將 SaveDocument 方法重命名為 Index,不會有任何錯誤,因為這兩個方法簽名不匹配。 從代碼組織的角度來看,這通常是我的偏好,因為它清楚地表明 GET/POST 操作是針對同一頁面的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM