小编X-D*_*Dev的帖子

umbraco mvc表面控制器,无法从HttpPost Action返回视图

问题概述:

我创建了一个Surface控制器,其动作使用@ Html.Action(...)调用.

@ Html.Action调用在宏部分视图中完成,宏使用富文本编辑器包含在页面内容中.

(我是新手,所以如果我以错误的方式处理事情,请告诉我.)

Surface控制器有一个GET和一个POST动作,但它是在宏部分中调用的get动作.

获取操作呈现正常,在表单中输入任何数据都将使模型状态无效(这正是我目前正在测试的).

提交表单(没有输入数据)意味着我可以进入我的POST操作,ModelState.IsValid设置为false并返回CurrentUmbracoPage().

一切都很好...调试时没有遇到异常......

此时,页面上出现错误文本"Error loading Partial View script".

我要做的就是返回显示验证消息的同一页面.

细节:

Umbraco v6.0.5

我目前正在处理的控制器用于重置用户的密码.我还有一个登录控制器,通过使用RedirectToCurrentUmbracoPage()解决了这个问题.

访问包含宏的页面我使用地址http:// {testhost}/Reset-Password返回的错误文本读取:加载部分视图脚本时出错(文件:〜/ Views/MacroPartials/ResetPassword.cshtml)

代码在一个单独的解决方案中,并且视图和bin目录被复制.nuget包使用UmbracoCMS.Scaffolding.

控制器代码:

public class ResetPasswordSurfaceController : SurfaceController {        
        [ChildActionOnly]
        [HttpGet]
        public ActionResult Reset(string token, string email) {
             // Validation Code Omited             
             var user = Membership.GetUser(username);
             return PartialView("Reset", new ResetPasswordSurfaceModel { UserID =     user.ProviderUserKey.AsInt() });
        }

        [HttpPost]
        public ActionResult PostReset(ResetPasswordSurfaceModel model) {
            if (ModelState.IsValid) { 
                 //Password reset code omited                 
                  return RedirectToCurrentUmbracoPage();
             }
            //works but only partial view content …
Run Code Online (Sandbox Code Playgroud)

forms asp.net-mvc umbraco http-post

9
推荐指数
2
解决办法
2万
查看次数

错误:LINQ to Entities无法识别DataLength方法

我在这里有一个简单的问题.首先使用EF6模型.

var db = new MyEntities(GetEntityConnectionString());

ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext;
ObjectSet<DOCUMENT> objectSet = objectContext.CreateObjectSet<DOCUMENT>();
var results = objectSet.Where("SqlServer.DATALENGTH(it.BINARYCONTENT)>50000");
Assert.IsTrue(results.ToList().Count == 9);

var results2 = objectSet.Where(doc=>System.Data.Objects.SqlClient.SqlFunctions.DataLength( doc.BINARYCONTENT)>50000);
Assert.IsTrue(results2.ToList().Count == 9);

var results3 = db.DOCUMENTS.Where(doc => System.Data.Objects.SqlClient.SqlFunctions.DataLength(doc.BINARYCONTENT) > 50000);
Assert.IsTrue(results3.ToList().Count == 9);
Run Code Online (Sandbox Code Playgroud)

第一个断言成功,那么为什么在执行results2和result 3时会出现以下异常?

EntityFramework.SqlServer.dll中出现"System.NotSupportedException"类型的异常,但未在用户代码中处理

附加信息:LINQ to Entities无法识别方法'System.Nullable`1 [System.Int32] DataLength(Byte [])'方法,并且此方法无法转换为存储表达式.

有没有办法让其他断言成功?

c# linq linq-to-entities entity-framework entity-framework-6

6
推荐指数
1
解决办法
1696
查看次数