【问题标题】:How to know if page is called by get or post method inside of razor page如何知道页面是否被剃须刀页面内的get或post方法调用
【发布时间】:2019-09-30 14:18:26
【问题描述】:

我想使用相同的视图来创建和显示相同的对象。 如果页面由 get 方法调用,它会显示一个用于编辑对象的表单。 如果页面是通过 post 方法调用的,它会显示对象的值。

我已经通过使用 2 个不同的视图来完成它。 并尝试使用模型状态。

我想要类似的东西

@if(Method =="GET"){
  // form for edit.
}
else{
  // show data.
}

我试过了

        @if (ViewData.ModelState.IsValid)//this is always true
        {
            @using (Html.BeginForm(FormMethod.Post))
            {
                @Html.TextBoxFor(m => m.ProductID);
                @Html.TextBoxFor(m => m.ProductName);
                @Html.TextBoxFor(m => m.ProductDescription);
                @Html.TextBoxFor(m => m.ProductPrice);
                <input type="submit" value="registra"/>
            }
        }
        else
        {
               <p>@Model.ProductID</p>
               <p>@Model.ProductName</p>
               <p>@Model.ProductDescription</p>
               <p>@Model.ProductPrice</p>
        } 

如果在控制器中我使用 2 个不同的视图,它工作得很好,但我不能使用相同的视图,因为

【问题讨论】:

  • 我已经使用 ViewBag 让它工作了。在操作方法中,我刚刚添加了 ViewBag.Method="GET";或 ViewBag.Method="POST"。在我刚刚制作的视图中 @if(ViewBag.Method=="GET"){...}
  • 为什么只需要一个视图?视图应该尽可能地没有逻辑。将整个视图分支到两种不同的可能性是没有意义的。如果有一些 HTML 或内容需要在两个不同的视图之间共享,则将共享的内容分解为部分内容,并在两者中引用该部分内容。

标签: asp.net-mvc razor asp.net-core-mvc razor-pages


【解决方案1】:

如果它是一个 post 方法,那么模型将没有 ID。你应该在控制器/方法级别检查它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2019-03-18
    • 2019-06-21
    • 2021-09-01
    • 2021-12-22
    • 2020-11-11
    • 2020-01-12
    相关资源
    最近更新 更多