如何在不提交表单的情况下,使用Html.TextBoxFor()的onchange事件实时更新asp.net-mvc模型值?

2026-03-30 12:291阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计685个文字,预计阅读时间需要3分钟。

如何在不提交表单的情况下,使用Html.TextBoxFor()的onchange事件实时更新asp.net-mvc模型值?

我有一个文本框模板,我在我的视图中调用如下:@Html.TextBoxFor(m=> m.ActivityIDReturn)。我希望的是,每当我需要在该文本框中插入值时,我希望它能够自动更新模型,而无需点击任何提交按钮。

我有一个文本框,我在我的视图中调用如下:

@Html.TextBoxFor(Function(m) m.ActivityIDReturn)

我希望能够做的是每当在该文本框中插入值时,我希望它更新模型而不必点击任何类型的提交按钮.通过此文本框的值在视图中填充多个元素.

理想情况下,文本框看起来像这样:

@Html.TextBoxFor(Function(m) m.ActivityIDReturn, new with {Key .onchange=UpdateModel()})

要么

@Html.TextBoxFor(Function(m) m.ActivityIDReturn, new with {Key .onchange= RETLog(ActivityIDReturn:=ActivityIDReturn)})

RETLog()是在第一个位置创建视图的函数.

到目前为止,我能够实现这一目标的唯一方法是:

@Html.TextBoxFor(Function(m) m.ActivityIDReturn, New With {Key .onchange = "javascript:submit()"})

但我只能想象这种可能会产生什么可怕的副作用.

编辑:正是我想在这里完成的

在我的模型中我有这个:

Public Property PS As RecordsTaskView Get Return GlobalVar.db.PS.RecordsTaskViews.Find(ActivityIDReturn) End Get Set(ByVal value As RecordsTaskView) value = GlobalVar.db.PS.RecordsTaskViews.Find(ActivityIDReturn) End Set End Property

在我看来,我有这个:

@Html.LabelFor(Function(m) m.ActivityIDReturn) @Html.TextBoxFor(Function(m) m.ActivityIDReturn, New With {Key .onchange="javascript:submit()"}) @Html.DisplayFor(Function(m) m.PS.RefActionID) @Html.DisplayFor(Function(m) m.PS.QutDesc) @Html.DisplayFor(Function(m) m.PS.TaskDesc) @Html.DisplayFor(Function(m) m.PS.CltCode) @Html.DisplayFor(Function(m) m.PS.CltDesc) @Html.DisplayFor(Function(m) m.PS.BenIDin)

基本上所有这些DisplayFor都由此文本框的值填充.当用户在文本框中输入值而用户不必刷新页面,或者按下输入或按下任何按钮时,我希望填充这些DisplayFor值.

以下是我的代码的完整视图:gist.github.com/aaronmallen/7042328

你需要使用jquery ajax调用.

$('#ActivityIDReturn').change(function(){ $.ajax({ url: '@Url.Action("Action", "Controller")', type: 'post', data: { Text: $('#TextField').val() }, success: function (_result) { $('#TaskDesc').val(_result.foo); } }); });

我没有像你在你的提琴手那样做.我一直用lamda这样的东西做过

@Html.DisplayFor(Function(m) m.TaskDesc)

这将自动生成TaskDesc的id.您需要查看生成的Html,以确保您在jquery中调用的id匹配.

和控制器方法

<HttpPost()> _ Public Function UpdateFields(Text As String) As ActionResult Dim model as MODELNAME = //query the database Return Json(New With { .foo = model.bar, .baz = model.baz }); End Function

这将在每次字段更改时触发,因此如果他们键入一个包含10个字母的单词,它将触发10次.希望这会有所帮助

如何在不提交表单的情况下,使用Html.TextBoxFor()的onchange事件实时更新asp.net-mvc模型值?

本文共计685个文字,预计阅读时间需要3分钟。

如何在不提交表单的情况下,使用Html.TextBoxFor()的onchange事件实时更新asp.net-mvc模型值?

我有一个文本框模板,我在我的视图中调用如下:@Html.TextBoxFor(m=> m.ActivityIDReturn)。我希望的是,每当我需要在该文本框中插入值时,我希望它能够自动更新模型,而无需点击任何提交按钮。

我有一个文本框,我在我的视图中调用如下:

@Html.TextBoxFor(Function(m) m.ActivityIDReturn)

我希望能够做的是每当在该文本框中插入值时,我希望它更新模型而不必点击任何类型的提交按钮.通过此文本框的值在视图中填充多个元素.

理想情况下,文本框看起来像这样:

@Html.TextBoxFor(Function(m) m.ActivityIDReturn, new with {Key .onchange=UpdateModel()})

要么

@Html.TextBoxFor(Function(m) m.ActivityIDReturn, new with {Key .onchange= RETLog(ActivityIDReturn:=ActivityIDReturn)})

RETLog()是在第一个位置创建视图的函数.

到目前为止,我能够实现这一目标的唯一方法是:

@Html.TextBoxFor(Function(m) m.ActivityIDReturn, New With {Key .onchange = "javascript:submit()"})

但我只能想象这种可能会产生什么可怕的副作用.

编辑:正是我想在这里完成的

在我的模型中我有这个:

Public Property PS As RecordsTaskView Get Return GlobalVar.db.PS.RecordsTaskViews.Find(ActivityIDReturn) End Get Set(ByVal value As RecordsTaskView) value = GlobalVar.db.PS.RecordsTaskViews.Find(ActivityIDReturn) End Set End Property

在我看来,我有这个:

@Html.LabelFor(Function(m) m.ActivityIDReturn) @Html.TextBoxFor(Function(m) m.ActivityIDReturn, New With {Key .onchange="javascript:submit()"}) @Html.DisplayFor(Function(m) m.PS.RefActionID) @Html.DisplayFor(Function(m) m.PS.QutDesc) @Html.DisplayFor(Function(m) m.PS.TaskDesc) @Html.DisplayFor(Function(m) m.PS.CltCode) @Html.DisplayFor(Function(m) m.PS.CltDesc) @Html.DisplayFor(Function(m) m.PS.BenIDin)

基本上所有这些DisplayFor都由此文本框的值填充.当用户在文本框中输入值而用户不必刷新页面,或者按下输入或按下任何按钮时,我希望填充这些DisplayFor值.

以下是我的代码的完整视图:gist.github.com/aaronmallen/7042328

你需要使用jquery ajax调用.

$('#ActivityIDReturn').change(function(){ $.ajax({ url: '@Url.Action("Action", "Controller")', type: 'post', data: { Text: $('#TextField').val() }, success: function (_result) { $('#TaskDesc').val(_result.foo); } }); });

我没有像你在你的提琴手那样做.我一直用lamda这样的东西做过

@Html.DisplayFor(Function(m) m.TaskDesc)

这将自动生成TaskDesc的id.您需要查看生成的Html,以确保您在jquery中调用的id匹配.

和控制器方法

<HttpPost()> _ Public Function UpdateFields(Text As String) As ActionResult Dim model as MODELNAME = //query the database Return Json(New With { .foo = model.bar, .baz = model.baz }); End Function

这将在每次字段更改时触发,因此如果他们键入一个包含10个字母的单词,它将触发10次.希望这会有所帮助

如何在不提交表单的情况下,使用Html.TextBoxFor()的onchange事件实时更新asp.net-mvc模型值?