2016-07-31 121 views
-2

我想从用户的输入值没有提交任何东西,然后我想通过ajax方法作为参数传递给操作方法。我尝试了很多方法,但我找不到解决方案。如何在不提交输入表单的情况下获得输入值?

下面是代码

<input type="text" id="task" name="task" value="" /> 


       @Ajax.ActionLink("ADD TASK", "show_task",new {task=Request["task"]}, new AjaxOptions 
{ 
    HttpMethod = "POST", 
    UpdateTargetId = "print", 
    InsertionMode = InsertionMode.Replace 

}) 

这里是控制器的操作方法

public ActionResult show_task(string task) 
     { 
      var add_task = new tasks_table(); 
      add_task.task = task; 
      add_task.id = 24; 
      add_task.f_id=10; 
      add_task.date_oftask=DateTime.Now; 

      db.tasks_table.Add(add_task); 
      db.SaveChanges(); 
      var tasks = db.tasks_table.Include(t => t.user_detail); 
      return PartialView("render_tasks",tasks);     

     } 
+0

**我想从用户**输入值,当你想要它?你应该知道你的要求。 – Shyju

+0

当用户输入他的值,然后单击ajax方法后,我希望该值通过ajax方法作为操作方法的参数 –

回答

0

既然你想要的文本框的当前值,你可以更好的自己与自己的JavaScript代码来做到这一点进行ajax调用,而不是依靠Ajax.ActionLink辅助方法。

因此,将您的Ajax.ActionLink调用更改为正常操作链接。

<input type="text" id="task" name="task" value="" /> 
@Html.ActionLink("Add Task","show_task", null, new {id="addTask"}) 
<div id="print"></div> 

现在听click事件此链接,阅读文本框中的值,发送到服务器。你可以使用jQuery $.post这样做。在响应回调中,您可以使用从服务器返回的响应来更新打印div的内容。

$(function(){ 

    $("a#addTask").click(function(e){ 

    e.preventDefault(); 
    $.post($(this).attr("href"), { task:$("#task").val()},function(res){ 
     $("#print").html(res); 
    }); 

    }); 

}); 
+0

我按照你的指示,我做了同样的事情,因为你提到,但是当我点击链接什么都没有发生。它不是点击。 –

+0

你的意思是不是点击?你有任何JS错误?打开您的浏览器控制台并查看它是否正在进行服务器调用(或任何错误) – Shyju

0

您可以使用JavaScript focusOut函数将值发送给控制器。 by focusOut方法,当我们移动到下一个字段时,我们立即得到输入字段中的值。

$('#task').focusOut(function(){ 
    Your ajax call method.... 
}); 

希望它有帮助。

相关问题