如何检查POST表单数据是否为空?

时间:2016-03-27 20:08:11

标签: c# asp.net-mvc http nancy

我正在使用Nancy on .NET编写一个CRUD web api。在尝试进行服务器端验证时,我无法阻止在数据库上写入空值的表单。

这是我的控制器/模块:

 public dynamic NEW_POST(dynamic parameters)
        {
            //Binds model to form
            var post = this.Bind<Post>();
            if (post.Title.Length == 0 && post.Content.Length == 0)
            {
                return HttpStatusCode.BadRequest;
            }

            else
            {
                _post.Create(post);
                return Response.AsRedirect("/");
            }

        }

我也试过检查模型是否== null。

空值仍然通过控制器并进入数据库。 任何提示将不胜感激,谢谢

2 个答案:

答案 0 :(得分:2)

以下是检查它的常用方法:

class OrdersController < ApplicationController

  def new
    @order = Order.new
    @order.menu_orders.build
  end

  def create
    @order = Order.new(order_params)
    if @order.save
      redirect_to orders_path
      flash[:success] = "Order created"
    else
      render 'new'
    end
  end

  private

  def order_params
    params.require(:order).permit(:name, menu_orders_attributes: [ :menu_id, :order_id ])
  end
end

帖子数据包含在表单集合中。

答案 1 :(得分:0)

这就是我通常会这样做并检查posted的数据是否为null(就像你说的那样?)。例如:

public class CustomerModule : NancyModule
{
    public CustomerModule()
    {
        this.Post["api/customers"] = args => this.AddCustomer();
    }

    private Negotiator AddCustomer()
    {
        var customer = this.Bind<Customer>();

        if (customer == null)
        {
            return this.Negotiate.WithStatusCode(HttpStatusCode.BadRequest);
        }

        return this.Negotiate.WithStatusCode(HttpStatusCode.Created);
    }
}

public class Customer
{
    public string Forename { get; set; }

    public string Surname { get; set; }
}

当我在本地启动应用程序时,这是一种享受。有关完整源代码,您可以查看here