我有一个在我的 View 中调用的文本框,如下所示:
@Html.TextBoxFor(Function(m) m.ActivityIDReturn)
我希望能够做的是,每当将值插入到此文本框中时,我希望它能够更新模型,而不必点击任何类型的提交按钮。该文本框的值将在 View 中填充多个元素。
所以理想情况下,文本框看起来像这样:
@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() 是首先创建 View 的函数。
到目前为止,我能够实现这一目标的唯一方法是:
@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 值,而无需用户刷新页面或按 Enter 键或按任何按钮。
这是我的代码的完整 View :https://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);
}
});
});
我还没有像你在 fiddler 中那样做过。我总是用 lamda 之类的东西来完成它们
@Html.DisplayFor(Function(m) m.TaskDesc)
这将自动生成一个 TaskDesc 的 id。您需要查看生成的 Html 以确保您在 jquery 中调用的 id 匹配。
和 Controller 方法
<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 次。希望这有帮助
关于asp.net-mvc - 在 Html.TextBoxFor() onchange 事件上更新模型值而不提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19438284/