Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net MVC找不到局部视图_Asp.net_Asp.net Mvc_Controller_Asp.net Apicontroller - Fatal编程技术网

Asp.net MVC找不到局部视图

Asp.net MVC找不到局部视图,asp.net,asp.net-mvc,controller,asp.net-apicontroller,Asp.net,Asp.net Mvc,Controller,Asp.net Apicontroller,我有两个项目(AccountController和OrderController),一个是控制器,另一个是ApicController。控制器是AccountController,而OrderController是ApicController 我需要访问AccountController的操作(发送帐户确认电子邮件,将视图转换为字符串)。当用户下订单时会发生这种情况,当它检测到用户是新用户时,它会自动注册,然后发送注册确认电子邮件(这是AccountController的责任) 以下是Order

我有两个项目(AccountController和OrderController),一个是控制器,另一个是ApicController。控制器是AccountController,而OrderController是ApicController

我需要访问AccountController的操作(发送帐户确认电子邮件,将视图转换为字符串)。当用户下订单时会发生这种情况,当它检测到用户是新用户时,它会自动注册,然后发送注册确认电子邮件(这是AccountController的责任)

以下是OrderController的摘录

var context = new HttpContextWrapper(System.Web.HttpContext.Current);
var routeData = RouteTable.Routes.GetRouteData(context);
routeData.Values.Add("controller", "Account");
routeData.Values.Add("action", "Register");
var requestContext = new System.Web.Routing.RequestContext(context, routeData);
var controllerContext = new System.Web.Mvc.ControllerContext(requestContext, new AuthenticationController());
await AccountController.SendAddressRegistrationEmail(controllerContext,model);
这是AccountController上的部分

public static async Task SendAddressRegistrationEmail(ControllerContext context, model)
{
    var manager = context.HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
    var helper = new UrlHelper(context.RequestContext);

    //// Generate the token and send it
    string encodedEmailToken = HttpUtility.UrlEncode(await manager.GenerateEmailConfirmationTokenAsync(model.ID));
    string body = ViewAsString(context, "~/Views/Templates/RegistrationConfirmation.cshtml", new RegistrationConfirmationMessage
    {
        EmailAddress = user.EmailAddress,
        Expiration = expiration,
        ConfirmationUrl = helper.Action("ConfirmEmail", "Account", new { userId = model.ID, encodedEmailToken = encodedEmailToken, ReturnUrl = returnUrl }, protocol: context.HttpContext.Request.Url.Scheme, hostName: context.HttpContext.Request.Url.Host)
    });

    await manager.SendEmailAsync(user.ID, "Confirm your account", body);
}

protected static string ViewAsString<T>(ControllerContext context, string viewName, T model)
{
    using (var sw = new StringWriter())
    {
        var viewResult = ViewEngines.Engines.FindPartialView(context, viewName);
        var viewContext = new ViewContext(context, viewResult.View, new ViewDataDictionary<T>(model), new TempDataDictionary(), sw);
        viewResult.View.Render(viewContext, sw);
        viewResult.ViewEngine.ReleaseView(context, viewResult.View);
        return sw.GetStringBuilder().ToString();
    }
}
公共静态异步任务SendAddressRegistrationEmail(ControllerContext上下文,模型)
{
var manager=context.HttpContext.GetOwinContext().GetUserManager();
var helper=newurlhelper(context.RequestContext);
////生成令牌并发送它
字符串encodedeMiltoken=HttpUtility.UrlEncode(wait manager.GenerateEmailConfirmationTokenAsync(model.ID));
string body=viewstring(上下文,“~/Views/Templates/RegistrationConfirmation.cshtml”,new RegistrationConfirmation message
{
EmailAddress=user.EmailAddress,
过期=过期,
确认Url=helper.Action(“确认邮件”、“帐户”,新{userId=model.ID,encodedEmailToken=encodedEmailToken,ReturnUrl=ReturnUrl},协议:context.HttpContext.Request.Url.Scheme,主机名:context.HttpContext.Request.Url.Host)
});
wait manager.sendmailasync(user.ID,“确认您的帐户”,body);
}
受保护的静态字符串ViewAsString(ControllerContext上下文、字符串viewName、T模型)
{
使用(var sw=new StringWriter())
{
var viewResult=ViewEngines.Engines.FindPartialView(上下文,viewName);
var viewContext=newviewcontext(context,viewResult.View,newviewdatadictionary(model),newtempdatadictionary(),sw);
viewResult.View.Render(viewContext,sw);
viewResult.ViewEngine.ReleaseView(上下文,viewResult.View);
返回sw.GetStringBuilder().ToString();
}
}
FindPartialView始终返回NULL,部分视图位于(Views/Templates/RegistrationConfirmation.cshtml)上


当我确保控制器上下文是AccountController时,是否遗漏了导致部分视图不可见的内容?或者“上下文”上有需要初始化的内容?

是否尝试在共享中添加视图folder@Ravi已尝试将其放在共享文件夹中,但不起作用。两个控制器(apicontroller和controller)位于不同的项目中。