2010-07-30 18 views
1

Je ne sais pas exactement ce que je fais mal ici..net Html.RenderAction renvoie binaire au lieu de HTML. Huh?

J'ai une action qui renvoie une vue partielle:

public class SharedController : BaseController 
{ 
public ActionResult StudentPoll() 
     { 
      WAM.X2O.FuelUpToPlayContext db = new WAM.X2O.FuelUpToPlayContext(WAM.Utilities.Config.ConnectionString); 
      WAM.X2O.StudentPoll m = (from s in db.StudentPolls where s.IsActive == true select s).SingleOrDefault(); 

      return PartialView("StudentPoll", m); 
     } 
} 

je mets en œuvre l'action comme ceci:

<%Html.RenderAction("StudentPoll", "Shared");%> 

La vue partielle ressemble à ceci:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Fuel_Up_To_Play.Models.Shared.StudentPollModel>" %> 
<%if(ViewData.Model != null){ %> 
<div class="block"> 
    <div class="holder"> 
     <div class="frame"> 
      <h2 class="poll">Student Poll</h2> 
      <!-- TODO - Student Poll has a form screen, and results screen. 
       Results anim is here to demo what should happen after submision --> 
      <form action="/Shared/SubmitStudentPoll" method="post" class="poll-form" <%if(ViewData.Model.StartingState == Fuel_Up_To_Play.Models.Shared.StudentPollModel.PollStates.RESULTS){%>style="display:none"<%} %>> 
       <fieldset> 
        <span><%=ViewData.Model.StudentPoll.Question %></span> 
        <input type="hidden" id="student_poll" name="student_poll" value="<%=ViewData.Model.StudentPoll.ID %>" /> 
        <%foreach(WAM.X2O.StudentPollAnswer answer in ViewData.Model.StudentPoll.RelatedStudentPollAnswers){ %> 
        <div class="row"> 
         <input type="radio" class="radio" id="answer_<%=answer.ID %>" name="poll_answer" value="<%=answer.ID %>"/> 
         <label for="answer_<%=answer.ID %>"><%=answer.AnswerText%></label> 
        </div> 
        <%} %> 
        <input id="submitBtn" type="image" style="display:none" class="image" src="/Content/images/btn-submit-05.gif" /> 
       </fieldset> 
      </form> 
      <div class="progress-box" <%if(ViewData.Model.StartingState == Fuel_Up_To_Play.Models.Shared.StudentPollModel.PollStates.FORM){%>style="display:none"<%} %>> 
       <span><%=ViewData.Model.StudentPoll.Question %></span> 
       <%int answerCounter = 0; 
       foreach(WAM.X2O.StudentPollAnswer answer in ViewData.Model.StudentPoll.RelatedStudentPollAnswers){ %> 
       <div class="box"> 
        <span class="names"><%=answer.AnswerText%><strong class="quesPctTxt" rel="<%=ViewData.Model.AnswerPercentages[answerCounter] %>"></strong></span> 
        <div class="progress-bar"><span class="quesPctBar"></span></div> 
       </div> 
       <% 
        answerCounter++; 
       } %> 
      </div> 
     </div> 
    </div> 
</div> 
<script type="text/javascript" src="/Scripts/studentpollscript.js"></script> 
<script type="text/javascript"> 

    $(document).ready(function() { 

     $("input.radio[name='poll_answer']").change(function() { 
      $("#submitBtn").show(); 
     }); 

     $("#submitBtn").click(function() { 

      $(".poll-form").ajaxForm(
       { dataType: 'json', 
        success: function(json) { 
         alert(json.Success); 

        } 
       } 
      ); 

     }); 
    }); 

</script> 

<%} %> 

natually , Je m'attendrais à cette approche pour retourner HTML. Mais non. Au lieu de cela, il semble que binary est rendu dans le navigateur. Évidemment, je fais quelque chose de mal mais je ne sais pas quoi.

Voilà ce qui est rendu dans le navigateur: http://screencast.com/t/Mjg1OWJj

Toutes les idées des gens? Je suis perplexe mais je suis sûr que c'est quelque chose de simple qui me manque.

Répondre

0

Je voudrais deviner qu'il ne définit simplement pas le type de contenu correctement. Que montre une trace réseau (violoneur, etc.)? Peut-être essayer d'utiliser View("StudentPoll", m); au lieu de PartialView(...)?

Aussi; faites attention - beaucoup de ceux <%= ne sont pas sûrs, c'est-à-dire qu'ils ne sont pas codés en html.