【问题标题】:How to get autocomplete text box value when post in ASP.NET with DevExtreme使用 DevExtreme 在 ASP.NET 中发布时如何获取自动完成文本框值
【发布时间】:2020-09-22 14:15:47
【问题描述】:

我在 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);
  }

【问题讨论】:

  • 您在控制器上使用 DataSourceLoadOptions 吗?请参阅 asp.net 核心版本和控制器选项卡上的文档。 js.devexpress.com/Demos/Widgetsgallery/Demo/Autocomplete/…
  • @DanielleLpz 我点击了这个链接,但仍然找不到我的问题的解决方案。请检查已编辑的问题。
  • 你的实例_context初始化了吗?
  • @DanielleLpz 是的,我愿意
  • 我认为您在 DevExtreme 控件上缺少 ValueExpr

标签: asp.net-core devexpress devextreme


【解决方案1】:

您是否要提交表单并将字段值绑定到 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);
}

结果:

【讨论】:

  • 哇!!我所需要的只是控件上的“名称”配置。非常感谢您的解决方案!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 2018-01-25
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多