丢失:在ASP.NET MVC3 / jQuery中通过Ajax获取完全呈现的视图

时间:2012-03-21 03:09:12

标签: asp.net-mvc-3 jquery

所有

我是MVC3 / jQuery组合的新手,并且一直在阅读教程。虽然我有点概念,剃刀语法等等。我仍然对如何实现我正在尝试的基本概念感到困惑。

我有一个textarea当有人输入一些文本并点击进入时,我想用文本区域的内容触发对服务器的ajax调用,并获得一个完整形成的HTML模糊,我可以放入一个div。现在正如我在MVC3中所理解的那样,这将是一个视图,所以从某种意义上讲,我在服务器上呈现一个视图并将其发回,因此我可以将其放入HTML中。

这可能吗?我可以查看任何示例,看看这是如何完成的?我知道如何捕获击键,获取值等等,这是通过ajax完全形成的HTML的部分呈现,我正在努力理解。

谢谢,

1 个答案:

答案 0 :(得分:1)

你可以使用jQuery。这是它的工作原理。你监听文本区域的keydown事件,当有一个keydown时,检查它是什么键。如果是输入键,然后对服务器页面进行jQuery ajax调用(控制器中的数据操作方法)将数据存储到您的表中并返回您想要的标记并返回该表。在您的脚本中将其加载到相关的div。

<强> HTML

//Load jQuery library in your page

<textarea id="txtComment" > </textarea>
<div id="divComment"></div>

<强>的Javascript

$(function(){

 $("#txtComment").keydown(function (event) {

     if (event.keyCode == 10 || event.keyCode == 13) {

         var comment=$("#txtComment").val();
         comment=encodeURIComponent(comment);
         $.post("yourcontroller/actionmethod?data="+comment,function(response){
         $("#divComment").html(response);
       });

    }

 });    

});

以及控制器操作方法

public ActionResult actionmethod(string data)
{
  //Do some sanitization on the data before saving.

  // Call your method to save the data to your tables.

   CommentViewModel objCommentVM=new CommentViewModel();
   objCommentVM.Comment=data;

  return View("PartialCommentView",objCommentVM);

}

你应该有一个名为“CommentViewModel”的ViewMolde类,如下所示

public class CommentViewModel
{
   public string Comment{ set; get; }
}

你应该有一个名为PartialCommentView的View,它强烈地键入CommentViewModel

@model FlashRack.ViewModel.RackViewModel
@{
    Layout = null;
}
<div>
 @Model.Comment
</div>

如果您只是返回一个字符串,而不是返回一个View,您也可以使用Return Content("your string here")方法返回该字符串。但我更喜欢通过View返回ViewModel,因为它对我来说更具可扩展性和清晰度。

您的操作方法将返回PartialCommentView中包含数据的标记。

请记住,您必须妥善处理特殊字符并妥善转义它们。