如何知道页面是由剃刀页面内部的get还是post方法调用的

时间:2019-05-13 15:24:06

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

我想使用相同的视图来创建和显示相同的对象。 如果该页面由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个不同的视图,则可以很好地工作,但是我不能使用相同的视图,因为

1 个答案:

答案 0 :(得分:0)

如果是post方法,则该模型将没有ID。您应该在控制器/ method级别

中进行检查