我正在使用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。
空值仍然通过控制器并进入数据库。 任何提示将不胜感激,谢谢
答案 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。