使用ajax提交数据从文本框到asp.net mvc控制器
本文关键字:asp net mvc 控制器 文本 ajax 提交 数据 使用 | 更新日期: 2023-09-27 17:50:45
我有这个
<<p> 视图/strong>@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form-inline", role = "form" }))
{
@Html.TextBox("SearchString", ViewBag.SearchFilter as string, new { @class = "form-control", onclick="keystroke()", id = "search" })
}
控制器//GET: Home
public async Task<ActionResult> Index(MyViewModel model)
{
//...
if (model.SearchString != null)
{
//...
var myString = model.SearchString;
var b = model.FirstInt
}
//...
return View(model);
}
ViewModel
public class MyViewModel
{
//...
public string SearchString { get; set; }
public int? FirstInt { get; set; }
}
Javascript function keystroke() {
var firstint = 1;
$("#search").keypress(function(event) {
if (event.which === 13) {
event.preventDefault();
$("form").submit(function() {
var text = $('#SearchString').val();
sendForm(firstint, text);
});
}
});
}
function sendForm(firstint, text) {
var data = {FirstInt: firstint, SearchString: text}
$.ajax({
url: "Home/Index",
type: 'POST',
data: data,
success: function () {
alert('success');
}
});
};
和它不工作
我想当用户在搜索输入中按Enter键时,我将他输入的文本和firstint的值发送给控制器。如果我删除所有的javascript,然后按Enter键通常发送到控制器,但我也需要firstint值。
使用Ajax的示例。BeginForm,您将需要引用
jquery.unobtrusive-ajax.js
否则就会像普通的Html.BeginForm.
视图:
@using (Ajax.BeginForm("Index", "Home",
new AjaxOptions { HttpMethod = "Post", OnFailure = "OnFailure", OnSuccess = "OnSuccess" }))
{
<input type="text" name="Id" />
// Your HTML inside your form...
<button type="submit">Submit Form</button>
}
控制器:
[HttpPost]
public ActionResult Index(FormCollection collection)
{
var Id = collection["Id"];
return View();
}
Javascript:
<script>
function OnFailure(x, s, e) {
alert(e);
// More code here...
}
function OnSuccess(d) {
alert(d);
// More code here...
}
</script>
当您尝试执行时,keypress事件不会找到firstint,因为它不存在于函数keystroke之外。因此,您必须在"全局"变量(对所有函数可见)中声明它,然后您可以在按键事件中使用它。你的代码应该像这样:
var firstint;
$("#search").keypress(function(event) {
if (event.which === 13) {
event.preventDefault();
}
});
$("form").submit(function() {
var text = $('#SearchString').val();
sendForm(text);
});
function keystroke() {
firstint = 1;
$("form").submit();
}
function sendForm(text) {
var data = {FirstInt: firstint, SearchString: text}
$.ajax({
url: "Home/Index",
type: 'POST',
data: data,
success: function () {
alert('success');
}
});
};