我在Razor View Page中创建了一个bootstrap表单。我想使用Request DTO将表单数据发送到服务,但它没有发生。我可以让按钮单击事件工作,断点到达服务但是数据为空。
这是我的表格标记:
<form class="form-horizontal" role="form" action="~/User" method="post">
<div class="form-group">
<label for="firstName" class="col-sm-3 control-label"> First Name </label>
<div class="col-sm-9"> <input type="text" class="form-control" id="FirstName" placeholder="FirstName" required> </div>
</div>
</div>
这是我的服务:
public object Post(RegisterUser registerUserRequest)
{
var newUserRegister = new RegisterUser()
{
FirstName = registerUserRequest.FirstName,
LastName = registerUserRequest.LastName,
}
}
我认为值得分享的另一件事是我的Model类包含的内容比我显示的更多,但我不认为它们在这种情况下很重要。请帮我解决这个问题。感谢
答案 0 :(得分:2)
您尚未提供有关托管RegisterUser
的路线的足够详细信息。您还应该提供HTTP请求和响应标头,它提供了有关问题的最佳信息来源。
您也不应该使用~/
前缀而不在ServiceStack中执行任何操作,您可以使用请求DTO Reverse Routing extension methods在您想要的网址上获取Typed API发布,例如:
<form class="form-horizontal" role="form"
action="@(new RegisterUser().ToPostUrl())" method="post">
<div class="form-group">
<label for="firstName" class="col-sm-3 control-label">
First Name </label>
<div class="col-sm-9"><input type="text" class="form-control" id="FirstName" placeholder="FirstName" required> </div>
</div>
</div>
</form>
ServiceStack还鼓励您使用API First Development方法,鼓励您使用Ajax Bootstrap Forms,它将使用Ajax发送您的表单并自动绑定任何错误或验证错误响应到您的表单错误占位符,您可以调用用:
$("form").bindForm({
success: function(response) { }
});
Email Contacts演示是一个很好的例子,其中包括解释这是如何工作的。 docs on ss-utils.js
中还有其他信息