mvc c#jquery如果记录存在其他更新表,则更新视图的一部分

时间:2012-08-09 22:28:41

标签: asp.net-mvc jquery

我正在寻求关于如何处理此功能的建议(像往常一样)。我有一个页面,其中有编辑框,用户在页面中提交输入,其唯一目的是将其保存到记录中。但我想做的(避免重复)是先搜索表格中的任何SIMILAR记录,如果有任何相似的记录,我想将它返回给用户(在同一个视图上)然后询问,你想要吗?使用这些记录而不是保存新记录?

所以我有一个观点

<script type="text/javascript">
   $(document).ready(function(){
      $(function(){
         $('.submit-link').click(function(){
             /** not sure how to handle this **/
         });
      });
   });
</script>


<% using(Html.Beginform()){%>
   <%: Html.TextBoxFor(model => model.Name)
   <button type="submit" value="register name" class="submit-link">Submit</button>
<%}%>

<div class="search-results"></div>

我的控制器

public ActionResult New(){
   return View();
}


[HttpPOst]

public ActionResult New(FormCOllection collection){
   try{
    Profile profile = new Profile();
    TryupdateModel(profile);
    context.Profile.Add(profile);
    context.SaveChanges();
   }
catch(Exception ex)
{
}
   return View();
}

所以我的困境是,我不确定是否:

  1. 我应该将它发布到“新”动作,然后在其中间进行搜索,如果记录存在,我应该返回一个json格式数据,这样我就可以使用jquery无缝地显示它,然后保存它然后重定向到同一页面。

  2. 或者,我应该将整个事情指向一个将处理搜索的json操作,如果找到了某些内容,则返回到同一页面,然后保存然后返回。

  3. 我对后者的问题是,它需要一个GET动作,如果我有一个get,那么我不确定这是一个好习惯,然后在控制器中有一个单独的JSon类型方法。这有意义吗?

    或许我只是需要有人指出我的另一种解决方案

    任何帮助表示赞赏!非常感谢!!

3 个答案:

答案 0 :(得分:2)

为什么不使用jQuery Autocomplete plugin将现有项目填充为用户类型。因此,如果用户键入现有的自动填充功能,则会显示选项,用户将选择该选项。现在,当用户从现有选项(从自动填充建议中)中进行选择时,您知道不需要将其另存为新内容。

这对用户而言不那么重要

答案 1 :(得分:1)

我会做前者。如果记录存在,则返回Json,否则返回重定向。我没有看到在同一方法中返回多种ActionResult有什么问题。也许那里的其他人认为这很邋,,但我不这么认为。

我在很多项目中都看到过这样的事情:

[HttpPost]
public ActionResult MethodName()
{
    ....
    if(error)
        return Json(new { Error = "Error!" });
    else
        return RedirectToAction("NextStep");
}

答案 2 :(得分:1)

1b怎么样?总是重定向,检查服务器端,如果存在类似的重定向到显示类似的页面,否则重定向到后保存页面。这样,您可以将一个场景与另一个场景分离,更易于维护。只有con是额外的往返