我尝试使用数据模型创建视图。将其转换为字符串邮件。当我在localserver上运行它时工作正常但是当上传到azure时崩溃说: [ArgumentNullException:Value不能为null。参数名称:view]
当不再在localserver上运行时,无法弄清楚为什么view为null。
通过弄乱视图的路径,我可以在localserver上获得与azure上的版本相同的错误消息
public static string MailViewToString(ControllerContext context, string viewName, TipsFormModel FormModel)
{
context.Controller.ViewData.Model = FormModel;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindView(context, viewName, null);
var viewContext = new ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(context, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
//控制器
[HttpPost]
public ActionResult PostTip(TipsFormModel RecivedForm)
{
TipsList SpTipsList = new TipsList();
RecivedForm.CurrentUser = Context.Web.CurrentUser.Title;
var UploadedCv = RecivedForm.CV;
var UploadedDoc = RecivedForm.OtherDocument;
if (SavedJob != null)
{
RecivedForm.SelectedJob = SavedJob;
}
if (RecivedForm.CV != null)
{
UploadedCv = RecivedForm.CV;
}
if (RecivedForm.OtherDocument != null)
{
UploadedDoc = RecivedForm.OtherDocument;
}
//This function executes the tips and saves it into SP
SpTipsList.InsertTipSp(RecivedForm, Context);
string mailString = SendEmail.MailViewToString(this.ControllerContext, "~/Views/Home/MailView.cshtml", RecivedForm);
SendEmail.SendMail(mailString, UploadedCv, UploadedDoc, Context);
return View("PostTip");
}
//视图
@using (Html.BeginForm("PostTip", "Home", FormMethod.Post, new { id = "MainForm", enctype = "multipart/form-data" }))
{
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<label class="control-label">Kandidatens förnamn:</label>
<div class="form-group vali">
@Html.TextBox("FirstName", null, new { @class = "form-control input-lg", Name = "FirstName", id = "FirstName", placeholder = "Maria" })
</div>
<label class="control-label">Kandidatens efternamn:</label>
<div class="form-group vali">
@Html.TextBox("LastName", null, new { @class = "form-control input-lg", Name = "LastName", id = "LastName", placeholder = "Gustavsson" })
</div>
<label class="control-label">LinkedIn:</label>
<div class="form-group vali">
@Html.TextBox("LinkedIn", null, new { @class = "form-control input-lg", Name = "LinkedIn", id = "LinkedIn", placeholder = "https://se.linkedin.com/in/" })
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<label class="control-label">Kandidatens Email:</label>
<div class="form-group vali">
@Html.TextBox("Email", null, new { @class = "form-control input-lg", Name = "Email", id = "Email", placeholder = "example@internet.com" })
</div>
<label class="control-label">Kandidatens telefonnr:</label>
<div class="form-group vali">
@Html.TextBox("PhoneNumber", null, new { @class = "form-control input-lg", Name = "PhoneNumber", id = "Phone", placeholder = "XXXXXXXXXX" })
</div>
<label class="control-label">Kön:</label>
<div class="form-group">
<div> @Html.DropDownList("Gender", new SelectList(Enum.GetValues(typeof(TipFormViewModel.Gender))), new { data_style="btn-default btn-lg" ,title = "Kön", @class = "selectpicker form-control" }) </div>
</div>
</div>
<div class="clearfix"></div>
<br />
<div class="UploadDocument">
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="form-group vali">
<label class="control-label">CV:</label>
<input type="file" class="btn btn-default form-control" value="Browse" name="CV" /><br />
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<div class="form-group vali">
<label class="control-label">Andra dokument:</label>
<input type="file" class="btn btn-default form-control" value="Browse" name="OtherDocument" /><br />
<br />
</div>
</div>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="form-group vali txtarea">
<label class="control-label">Övrig information:</label>
@Html.TextArea("Comment", null, new { @class = "form-control textAreaSize", placeholder = "Max 2000 tecken", rows = "8", maxlength = "2000" })
<div id="Counter">
Tecken kvar: 2000 / 2000
</div>
<br />Ex. Vad har du för relation till kandidaten? Vad är hen duktig på? När kan vi bäst nå kandidaten? Övrig relevant information.<br />
</div>
<br />
<br />
<div class="clearfix"></div>
<div>
<label>
Är kandidaten medveten om ditt tips?
</label>
<div id="tipLabelNote">Notera att bonusen enbart betalas ut om den tipsade kandidaten är informerad i förväg.</div>
@Html.CheckBox("Asked", new { @class = "checkbox-lg" })
<label class="checkbox-label" id="checkBoxQuest">JA</label>
<br />
<br />
<input type="submit" value="Skicka" class="btn custombtn-success slight-margin btn-lg" id="SubBtn">
<div>
<br />
<span class="login-fail">@ViewBag.DummyError</span>
<span class="login-fail" id="ErrorValidation"></span>
</div>
</div>
</div>
<div class="clearfix"></div>
}
</div>
错误讯息:
[ArgumentNullException:Value不能为null。 参数名称:view] System.Web.Mvc.ViewContext..ctor(ControllerContext controllerContext,IView view,ViewDataDictionary viewData,TempDataDictionary tempData,TextWriter writer)+233 *********** \ SpoRec \ Models \ SendEmail.cs中的SpoRec.Models.SendEmail.MailViewToString(ControllerContext context,String viewPath,TipsFormModel FormModel):61 ************ Mail \ SpoRec \ Controllers \ HomeController.cs中的SpoRec.Controllers.HomeController.PostTip(TipsFormModel RecivedForm):163 lambda_method(Closure,ControllerBase,Object [])+104
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object []参数)+14
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary`2参数)+169
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary`2参数)+27 ............ ......