小编Jas*_*kan的帖子

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

ASP.NET MVC表格重新填充

我有一个控制器有两个动作:

[AcceptVerbs("GET")]
    public ActionResult Add()
    {
        PrepareViewDataForAddAction();
        return View();
    }


[AcceptVerbs("POST")]
    public ActionResult Add([GigBinderAttribute]Gig gig, FormCollection formCollection)
    {
        if (ViewData.ModelState.IsValid)
        {
            GigManager.Save(gig);
            return RedirectToAction("Index", gig.ID);
        }
        PrepareViewDataForAddAction();
        return View(gig);
    }
Run Code Online (Sandbox Code Playgroud)

如您所见,当表单发布其数据时,Add操作使用GigBinder(IModelBinder的实现)

在这个活页夹我有:

 if (int.TryParse(bindingContext.HttpContext.Request.Form["StartDate.Hour"], out hour))
        {
           gig.StartDate.Hour = hour;
        }
        else
        {
            bindingContext.ModelState.AddModelError("Doors", "You need to tell us when the doors open");
        }
Run Code Online (Sandbox Code Playgroud)

表单包含一个ID为"StartDate.Hour"的文本框.

如上所示,GigBinder测试用户是否在文本框中输入了一个整数,其中包含id"StartDate.Hour".如果没有,则使用AddModelError将模型错误添加到模型状态.

由于gigs属性gigs.StartDate.Hour是强类型的,因此如果用户在表单文本框中键入了这个值,我就无法将其值设置为"TEST".

因此,我无法设置gigs.StartDate.Hour的值,因为用户输入的是字符串而不是整数.

由于Add Action返回视图并传递模型(返回View(gig);)如果modelstate无效,当表单重新显示验证消息时,值"TEST"不会显示在文本框中.相反,它将是gig.StartDate.Hour的默认值.

我如何解决这个问题?我真的卡住了!

forms asp.net-mvc repopulation

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

在DateTime LastUpdated列上使用Html.hidden进行版本跟踪时,MVC.NET毫秒丢失

问题简而言之:

如何在MVC.NET中做到一点?

长版问题:

我试图在SQL表中使用DateTime列进行版本跟踪(这本身就是一个解决方案,用于在通过表的editview传回后重新附加Linq2Sql数据类)

但现在我得到"没有找到或改变行" - 异常.在ctx.submit上:

 ctx.appointments.Attach(appointment,true);
 ctx.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

其中ctx是我的Linq datacontext,约会我的表,并预约我试图附加的约会对象..我已将约会表设置为sugested here

建议的解决方案的读者也注意到了这个问题.他认为是一个解决方案.

这里的问题是我不使用webforms,我使用MVC.NET.所以我猜测正在使用

            <%= Html.Hidden("LastUpdate", Model.LastUpdate) %>                
Run Code Online (Sandbox Code Playgroud)

使LastUpdate属性更改.那么有什么方法可以确保在传回我的更新操作时获得相同(或至少相等)的DateTime对象?

我在更新约会表时使用建议的gettime()触发器.这显然存储了一个sql datetime对象.这可能不是由Linq2SQL精确解析的.我想这也增加了问题.

我希望有一个解决方案.我知道只使用时间戳格式也可以解决它..但这超出了这个问题的范围

sql versioning asp.net-mvc datetime

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

MVC2应用程序(和其他人)共享WCF服务和身份验证

我已经看到了几个类似的场景,但不是我特别的场景.我想知道是否有人可以告诉我进入哪个方向?

我正在开发两个(以及更晚的)MVC2应用程序.稍后还会有另一个(更厚的)客户端(WPF或Silverlight,TBD).这些都需要共享相同的身份验证.对于MVC2应用程序,他们(最好)需要单独登录 - 即如果用户登录到一个MVC2应用程序,只要cookie没有超时,就应该授权另一个MVC2应用程序.

将使用表单身份验证.

所有应用程序都需要使用通用业务功能,并通过通用WCF服务应用程序执行数据库访问.如果WCF不能公开访问(即在FW后面被阻止),那将是很好的(我认为).较厚的客户端可以使用附加服务层来访问Common WCF App.

这应该是什么样的:

MVCApp1 - > WCFAppCommon

MVCApp2 - > WCFAppCommon

ThickClient - > WCFApp2 - > WCFAppCommon

是否可以在WCFAppCommon中执行所有身份验证/授权?否则我想我将不得不重复MVCApps和WCFApp2中的所有安全逻辑,而对我来说,它似乎自然而然地存在于WCFAppCommon中.另一方面,似乎我在WCFAppCommon中进行身份验证/授权,我将无法使用表单身份验证.

我已经看到了可能的解决方案(我还没有尝试过),它们看起来比表单身份验证和单个数据库复杂得多.

任何帮助,赞赏,

菲尔

asp.net-mvc wcf forms-authentication

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

在控制器运行之前是否有事件?

我知道在触发动作之前/之后会有事件发生.

在调用控制器之前,堆栈中是否有更高的值?

asp.net-mvc controller

6
推荐指数
2
解决办法
5289
查看次数

ASP.NET MVC Html.TextBoxFor呈现的值不同于<%:Model.value%>

这很奇怪,我不知道为什么.我有一个ViewModel为我的对象返回一些值,在渲染它时,它们有不同的值,但是,它们指向同一个属性:

<%: Model.myProperty %>
Run Code Online (Sandbox Code Playgroud)

返回"25",这是我设置的属性.但是当它作为文本框呈现时,它返回"0"作为我的文本框的值!

<%: Html.TextBoxFor(f => f.myProperty) %>
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?该属性为十进制类型.谢谢.

asp.net-mvc asp.net-mvc-2

6
推荐指数
2
解决办法
2044
查看次数

ASP.Net MVC,ViewPage <Dynamic>和EditorFor/LabelFor

我正在使用Razer语法玩MVC3,不过我认为问题更为笼统.

在控制器中,我有类似的东西:

ViewModel.User = New User(); // The model I want to display/edit
ViewModel.SomeOtherProperty = someOtherValue; // Hense why need dynamic
Return View();
Run Code Online (Sandbox Code Playgroud)

我的视图继承自System.Web.Mvc.ViewPage

但如果我尝试做类似的事情:

<p>
@Html.LabelFor(x => x.User.Name
@Html.EditorFor(x => x.User.Name
</p>
Run Code Online (Sandbox Code Playgroud)

我收到错误:"表达式树可能不包含动态操作"

但是,使用ViewPage似乎很常见,编辑器/ LabelFor也是如此.因此,如果没有办法做到这一点,我会感到惊讶 - 欣赏任何指针.

asp.net-mvc dynamic

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

避免表格重新提交

我正在开发ASP.NET应用程序,并遇到与重新提交行为有关的"问题".我正在使用表单提交事件中的计数器控制重新提交,如果已经发布,则禁用提交.我的应用程序是一个3步骤的工作流程,当显示第3步时,事务从第2步提交到第3步.我的问题是什么?嗯...我想避免用户通过按F5或所有其他可能性重新提交数据.我不想禁用密钥,因为可能是解决方法.我想知道我是否可以删除在渲染完成后运行的HTTP模块中的帖子数据,并且在响应发送给用户之前.

asp.net

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

在asp.net mvc中处理按钮点击的正确方法?

我正在制作一个网页(http://example.com/calculation/).该网站将进行简单的计算.该页面将以文本框(asp:TextBox)的形式向用户显示两个输入字段.我想知道如何处理点击"Calc"按钮(asp:按钮)?

因为我使用MVC模板,我是否将控制器用于页面?我该如何组织我的代码?

我想在两个文本框中获取用户输入,并在"结果"标签中输出值.

c# asp.net-mvc

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

在后面的代码中无法识别嵌套的Repeater

我有一个嵌套的转发器设置,但后面的代码中没有识别子转发器控件.它甚至没有添加到设计器文件中.我在aspx和ascx页面上尝试了这个但是两者都给出了同样的问题.

<asp:Repeater ID="RepeaterParent" runat="server">
    <ItemTemplate>

        <asp:Repeater ID="RepeaterChild" runat="server">
        </asp:Repeater>

    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

如果在页面上,后面的代码只识别RepeaterParent而不识别RepeaterChild.

有人可以帮我从这里出去吗?非常感谢!

asp.net repeater

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