2011-05-11 3 views
1

ideode는 일반 외부 HTML 페이지의 양식 데이터를 다른 MVC 사이트 컨트롤러에 게시하는 것입니다. 그런 다음 데이터는 거의 웹 서비스를 사용하는 것처럼 처리됩니다.외부 HTML ajaxForm 게시물에 대한 MVC ActionResult 리턴 유형은 무엇이되어야합니까?

$(document).ready(function() { 
    var options = { 
    target: '#output', 
    success: function(data){ alert('test success'); }, 
    url: http://localhost:57232/Services/SendFormData, 
    dataType: json 
    }; 

    $('form').ajaxForm(options); 
}); 

ActionResult는 FormCollection 개체에서 데이터를 올바르게 수신합니다.

[HttpPost] 
public ActionResult SendFormData(FormCollection collection) 
{ 
    string s = string.Empty; 

    return Json(new { Success = true, Message = "Message!" }, JsonRequestBehavior.AllowGet); 
} 
성공 결과가 반환되는이 시점에서

하지만

는 외형에 IE가 성공 콜백 함수를 호출하는 대신 반환 된 바이트를 저장하거나 열려고이 경우에 브라우저를 얻을 때.

이 페이지는 외부 페이지이므로 MVC 사이트의 일부가 아니기 때문에보기 또는 부분보기를 사용할 수 없습니다. 반환 유형은 무엇입니까? 당신은 DIV id를 언급 할 필요가 아약스 양식의과 targetId에서

@using (Ajax.BeginForm("Form", new AjaxOptions() { UpdateTargetId = "FormContainerdiv"  , OnSuccess = "$.validator.unobtrusive.parse('form');", OnComplete = "OnComplete();" })) 

: 당신이 UpdateTargetID을 설정해야 AjaxForm에서 또한

[HttpPost] 
    public ActionResult Form(Comment feedback) 
    { 
     if (feedback != null) 
     { 
      feedback.CommentedOn = DateTime.Now; 
      feedback.CommentId += 1; 
      if (ModelState.IsValid) 
      { 
       BlogPost blogpost = db.BlogPosts.Find(feedback.BlogId); 
       if (blogpost != null) 
        blogpost.NoofComments += 1; 
       db.Entry(blogpost).State = EntityState.Modified; 
       db.Entry(feedback).State = EntityState.Modified; 
       db.Comments.Add(feedback); 
       db.SaveChanges(); 
       return PartialView("CommentSuccess", feedback); 
      } 
     } 
     return PartialView("Comment", feedback); 
    } 

:

+0

"target"옵션은 #output의 데이터를 반환 된 데이터로 바꾸기 위해 양식 플러그인에 지시하고 있습니다. 테스트를 위해 제거하고 콜백 성공 함수에만 의존합니다. 또한, 당신은 따옴표에 귀하의 URL을 넣어해야 할 것 같아요. – BZink

+0

양식에 파일 업로드 필드가 포함되어있을 수 있습니까? –

+0

안녕하세요, 업로드 필드가 없습니다, 입력란의 대부분은 한 번 게시 된 서버 쪽에서 사용됩니다 숨겨진 입력 유형, 아이디어는 데이터의 양을 제한 할 수있는 querystring을 우회하는 것입니다. URL 주위에 따옴표를 포함하고 대상 옵션을 제거했습니다. 두 경우 모두 같은 문제가 남아있었습니다. 그것은 심지어 성공 이벤트를 호출하지 않습니다. – Kosmosniks

답변

0

당신은 partialview 결과를 반환해야 여기서 응답 데이터를 표시해야합니다.

<div id="FormContainerdiv">.</div> 
@Html.Partial("Comment", item); 
</div> 
+0

감사합니다. 문제가 해결 될 수 있다고 생각하며 최대한 빨리 테스트 할 것입니다. 그러나 나는 그것이 Html 페이지를 호출하는 면도날 문법에 약간의 관심을 가지고있다. Html 페이지는 일반적인 HTML 페이지이며 MVC 뷰가 아니기 때문이다. – Kosmosniks

관련 문제