所有
我是MVC3 / jQuery组合的新手,并且一直在阅读教程。虽然我有点概念,剃刀语法等等。我仍然对如何实现我正在尝试的基本概念感到困惑。
我有一个textarea当有人输入一些文本并点击进入时,我想用文本区域的内容触发对服务器的ajax调用,并获得一个完整形成的HTML模糊,我可以放入一个div。现在正如我在MVC3中所理解的那样,这将是一个视图,所以从某种意义上讲,我在服务器上呈现一个视图并将其发回,因此我可以将其放入HTML中。
这可能吗?我可以查看任何示例,看看这是如何完成的?我知道如何捕获击键,获取值等等,这是通过ajax完全形成的HTML的部分呈现,我正在努力理解。
谢谢,
答案 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中包含数据的标记。
请记住,您必须妥善处理特殊字符并妥善转义它们。