问题描述
在ASP.NET Core应用程序中发布表单时,我需要获取文本的值。
在我的HTML文件中,我具有以下DevExtreme控件:
<div class="form-group">
<label asp-for="@Model.Account.FullName" class="control-label"></label>
@(Html.DevExtreme().Autocomplete()
.DataSource(d => d.Mvc().Controller("Offer").LoadAction("GetFullNames"))
.ShowClearButton(true)
.Placeholder("Type name")
)
</div>
我通过此行从表单中获取所有其他值:
<div class="form-group">
<input asp-for="@Model.Account.Email" class="form-control" />
</div>
Devextreme文档没有提供任何有关如何在此字段中提取类型化值的信息。 由于我的前端知识有限,因此我不确定是否可以使用jQuery。
我正在使用此Get方法填充自动完成框,但是我的问题是,当自动完成位于表单内部并且正在提交表单时,如何获取值。
[HttpGet]
public object Get(DataSourceLoadOptions loadOptions)
{
return DataSourceLoader.Load(_context.Account,loadOptions);
}
解决方法
您要提交表单并将字段值绑定到httpost操作中的Account
模型吗?如果是这样,则应将Name
属性添加到“自动完成”小部件中。
也许您可以参考以下代码:
型号:
public class TestModel
{
public Account Account { get; set; }
}
public class Account
{
public string FullName { get; set; }
}
查看:
@model TestModel
<h2>Home</h2>
<form asp-action="Test">
<div class="form-group">
<label asp-for="@Model.Account.FullName" class="control-label"></label>
@(Html.DevExtreme().Autocomplete()
.DataSource(d => d.Mvc().Controller("Offer").LoadAction("GetFullNames"))
.ShowClearButton(true)
.Placeholder("Type name")
.Name("FullName")
)
<input type="submit" value="submit" class="btn btn-primary" />
</div>
</form>
OfferController:
public class OfferController : Controller
{
[HttpGet]
public object GetFullNames(DataSourceLoadOptions loadOptions)
{
List<string> names = new List<string>
{
"aa","ab","bb","bc","cc","cd"
};
return DataSourceLoader.Load(names,loadOptions);
}
}
HomeController:
[HttpPost]
public IActionResult Test(Account account)
{
return Ok(account);
}
结果: