How to write an mvc view to a string

4 comments
                    Search panel



if you enter in stuff in the filter outside this date range jul-sep, the search results are drawn using ajax:




Ajax panel is an ascx:(/Views/Common/CellNotesSearchResults.ascx)
<%@ control="" language="C#" inherits="System.Web.Mvc.ViewUserControl<Site.Controllers.CommonController.ViewModel>"> <%@ import="" namespace="Site.SiteCustom">
    <% var="" freetextnotes="Model.FreeTextNoteList.Where(f"> f.AdminNotes!=null&&f.AdminNotes.Contains(Model.SearchText)).OrderByDescending(f => f.DateAdded); %> <% foreach="" var="" freetextnote="" in="" freetextnotes="">
  • <div ><%=freetextnote.adminnotes>
Note date: <%=fmt.datetime(freetextnote.forecastdate)%> (added: <%=fmt.datetime(freetextnote.dateadded)%>)
<%----%> delete<%> <% foreach="" var="" forecastdata="" in="" model="" forecastdatalist="" where="" f=""> f.AdminNotes.Contains(Model.SearchText))) { %> <% var="" model="Model.ModelList.First(m">m.ModelKey == forecastData.ModelKey); %> <li >
<%=model.marketdesc> (<%=forecastdata.color> - <%=forecastdata.year>)

<div ><%=forecastdata.adminnotes> <%>
render action is to a string:


public ActionResult SearchDealerNotes(string text, bool isCycle2Mode, string dealerIDEnc) {
string result = "";
//ActionResult result=null;
var model = new CommonController.ViewModel();
model.InitSearchData(Crypto.DecryptID(dealerIDEnc), isCycle2Mode);
model.SearchText = text;
////result = Html.RenderAction<CommonController>(c => c.CellNotes(model.startDate));
result = RenderViewToString<CommonController.ViewModel>("~/Views/Common/CellNotesSearchResults.ascx",model);

//var b=new ActionResult();
return Content(result);
//return result;
}

protected string RenderViewToString<T>(string viewPath, T model) {
ViewData.Model = model;
using (var writer = new StringWriter()) {
var view = new WebFormView(ControllerContext,viewPath);
var vdd = new ViewDataDictionary<T>(model);
var viewCxt = new ViewContext(ControllerContext, view, vdd, new TempDataDictionary(), writer);
viewCxt.View.Render(viewCxt, writer);
return writer.ToString();
}
}


called by this JS code:

function searchAllDealerNotes(obj) {
    var inputObj = $('input[name="filter"]');
    var text = inputObj.val();
    var dealerIDEnc = $('#dealerIDEnc').val();
    if ($.trim(text).length > 0) {
        $.ajax({
            type: 'POST',
            url: websiteBaseUrl + 'Home/SearchDealerNotes',
            data: { 
                dealerIDEnc:dealerIDEnc, 
                text:encodeURIComponent(text) 
            },
            success:
                function (msg) {
                    if (msg != '') {
                        //Add note
                        $('#normalResults').hide();
                        $('#searchResults').show();
                        $('#searchResults .dealerNoteSearchResultList').html(msg);
                    }
                },
            error:
                function (msg) {
                    alert('error: ' + msg);
                }
        }).always(function () {
            
        });
        return false;
    }
}<span style="white-space: normal;">
</span>

<!--%--><!--%=forecastdata.adminnotes--><!--%--><!--%--><!--%--><!--%--><!--%=forecastdata.adminnotes--><!--%--><!--%--><!--%--><!--%--><!--%=forecastdata.adminnotes--><!--%--><!--%--><!--%-->

Comments


Leave a Comment