2012-03-09 13 views
5

मेरे पास एक तरीका है जो एक टिप्पणी के लिए वोट पंजीकृत करता है। अगर मतदान कास्टिंग करते समय कोई त्रुटि नहीं है, तो मैं पेज को अपडेट करने के लिए पार्टिकल व्यू रीसेट के माध्यम से एचटीएमएल का एक छोटा सा स्निपेट लौटाता हूं।मैं PartialViewResult के लिए एक खाली स्ट्रिंग (या शून्य) कैसे वापस कर सकता हूं?

यदि यह सफल नहीं होता है, तो कुछ भी नहीं होना चाहिए। मुझे ग्राहक की तरफ इस शर्त के लिए परीक्षण करने की ज़रूरत है।

सर्वर साइड विधि:

[HttpPost] 
public PartialViewResult RegisterVote(int commentID, VoteType voteType) { 
    if (User.Identity.IsAuthenticated) { 
     var userVote = repository.RegisterVote((Guid)Membership.GetUser().ProviderUserKey, commentID, voteType); 
     if (userVote != null) { 
      return PartialView("VoteButtons", userCommentVote.Comment); 
     } 
    } 

    return null; 
} 

क्लाइंट साइड स्क्रिप्ट:

$(document).on("click", ".vote img", function() { 
    var image = $(this); 

    var commentID = GetCommentID(image); 
    var voteType = image.data("type"); 

    $.post("/TheSite/RegisterVote", { commentID: commentID, voteType: voteType }, function (html) { 
     image.parent().replaceWith(html); 
    }); 
}); 

तो वोट दर्ज किया गया था, के रूप में उम्मीद "html" चर containes मार्कअप। यदि यह सफल नहीं होता है (यानी शून्य वापस लौटाया गया था) तो "html" चर एक पार्स त्रुटि के साथ "दस्तावेज़" ऑब्जेक्ट की बजाय है।

क्या पार्टिकल व्यू रीसेट से खाली स्ट्रिंग वापस करने का कोई तरीका है और फिर बस लंबाई के लिए परीक्षण करें? क्या ऐसा करने के लिए कोई अलग/बेहतर तरीका है? public PartialViewResult

करने के लिए::

उत्तर

5

से अपने विधि हस्ताक्षर बदलें बजाय अशक्त लौटने का फिर public ActionResult

, इस वापसी:

return Json("");

यह आपको एक आंशिक दृश्य अगर वापस जाने के लिए अनुमति देगा सफल, यदि नहीं, तो यह मूल्य के रूप में एक खाली स्ट्रिंग के साथ JSON वापस कर देगा। आपका वर्तमान जेएस इस तरह काम करेगा। एमएसडीएन से:

एक्शन रिसेट क्लास एक्शन परिणाम के लिए बेस क्लास है।

निम्नलिखित प्रकार ActionResult से निकाले जाते हैं:

  • ContentResult
  • EmptyResult
  • FileResult
  • HttpUnauthorizedResult
  • JavaScriptResult
  • JsonResult
  • RedirectResult
  • RedirectToRouteResult
  • ViewResultBase

यह आप अलग-अलग व्युत्पन्न प्रकार वापस जाने के लिए अपनी पद्धति में अनुमति देता है।

+0

एक आकर्षण की तरह काम किया। धन्यवाद – Jason

0

बेहतर होगा कि एक JsonResult के रूप में वापस जाने के लिए,

[HttpPost] 
    public JsonResult RegisterVote(int commentID, VoteType voteType) 
    { 
     JsonResult result = new JsonResult(); 
     object content; 
     if (User.Identity.IsAuthenticated) 
     { 
      var userVote = repository.RegisterVote((Guid)Membership.GetUser().ProviderUserKey, commentID, voteType); 
      if (userVote != null) 
      { 
       content = new 
       { 
        IsSuccess = true, 
        VoteButtons = userCommentVote.Comment 
       }; 
      } 
      else 
      { 
       content = new { IsSuccess = false }; 
      } 
     } 
     result.Data = content; 
     return result; 
    } 

अजाक्स कॉल में, आप अगर IsSuccesstrue या false है सत्यापित कर सकें।

संबंधित मुद्दे