2012-08-09 39 views
2

我寻求建议(像往常一样),对如何处理这一功能更新视图的一部分。我有一个包含编辑框的页面,用户在该页面中输入带有输入内容的唯一目的,即将其保存到记录中。你想,但我想这样做(以避免重复)是先在表格中搜索任何类似的记录,如果有任何类似的,我想它返回给用户(在同一视图),并要求,做使用这些记录而不是保存一个新的记录?MVC C#的jQuery如果记录存在,否则更新表

所以,我有一个观点

<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的行动,将处理的搜索,如果发现某事,返回到相同的页面保存其他然后返回。

我与后者的问题在于,它需要一个GET操作,这我不知道是很好的做法,如果我有一个GET,在控制器中,然后一个单独的JSON类型的方法。那有意义吗?

或者,也许我只是需要有人点我到另一种类型的解决方案

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

回答

1

我只想做前者。如果记录存在,则返回Json,否则返回重定向。在同一个方法中返回不止一种ActionResult时,我没有看到任何错误。也许其他人认为这很sl,,但我不知道。

我见过这样的事情在很多项目:

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

所以,当我返回JSON,如何处理这对我的getJSON()函数?我似乎无法使其工作。它指向我到不同的页面,显示了JSON结果... – gdubs 2012-08-09 22:49:42

+0

@gdubs,你使用jQuery张贴到控制器?你能否提供你用来打电话的代码,以及你正在做什么来处理它? – jebar8 2012-08-10 04:41:53

+0

好吧,即时尝试只使用帖子。当你点击表单内的提交按钮时。那是当我的困境进来时,我应该使用jquery来处理,而不是依靠页面的提交后? – gdubs 2012-08-10 18:34:56

2

为什么不使用jQuery Autocomplete plugin填充现有项目的用户类型。因此,如果用户键入一个现有的自动完成将显示的选项,用户将选择它。现在当用户从现有的选择(从自动填充建议)中选择,你知道你不需要将它保存为新的。

这对于用户来说工作较少

+0

你的意思是像谷歌自动完成?会不会太多的数据库?你如何生成现有的列表,然后在文本框中显示它? – gdubs 2012-08-15 13:43:43

+0

@gdubs;是。您可以缓存数据。所以它不会每次都打到分贝。这很容易实现。 http://jqueryui.com/demos/autocomplete/ – Shyju 2012-08-15 13:48:31

+0

好的,后续问题。如果我有另一个与搜索相关的对象(下拉列表),该怎么办?我在想用户是否从最后一个编辑框中跳出,然后用与搜索值相关的相应值填充下拉菜单。问题是,如果他们用鼠标点击下拉本身,该怎么办? (希望是有道理的。) – gdubs 2012-08-15 13:57:53

1

1b如何?总是重定向,检查服务器端,如果类似存在重定向到页面显示相似,否则重定向到保存后页面。这样你就可以将一个场景从另一个场景中解耦出来,更容易维护。只有CON是额外的往返

相关问题