所以我正在考虑从MVC 1.0转向MVC 2.0 RTM.我想开始遵循的一个约定是使用强类型HTML帮助程序来生成像文本框这样的控件.
但是,看起来它不会是一个简单的跳跃.我尝试迁移我的第一个表单,替换这样的行:
<%= Html.TextBox("FirstName", Model.Data.FirstName, new {maxlength = 30}) %>
Run Code Online (Sandbox Code Playgroud)
...对于这样的行:
<%= Html.TextBoxFor(x => x.Data.FirstName, new {maxlength = 30}) %>
Run Code Online (Sandbox Code Playgroud)
以前,这将使用以下方法签名映射到POST上的相应视图模型:
[HttpPost]
public ActionResult Registration(AccountViewInfo viewInfo)
Run Code Online (Sandbox Code Playgroud)
相反,它当前返回一个空对象.我认为断开连接是因为我们将视图模型传递给一个更大的聚合对象,该对象具有一些页面元数据和其他有趣的东西(因此x.Data.FirstName而不是x.FirstName).
所以我的问题是:使用强类型帮助器的最佳方法是什么,同时仍允许MVC框架将表单集合适当地转换为我的视图模型,就像在原始行中一样?有没有办法在不更改我们传递给视图的聚合类型的情况下执行此操作?
谢谢!
更新:所以绑定属性运行良好,但我不喜欢我必须将其应用于基本上每个发布的视图模型.我最终更改了继承层次结构,以便所有视图模型都从包含页面内容和其他元数据的基类继承,而不是作为名为的聚合属性Data.
c# attributes model-binding asp.net-mvc-2-validation asp.net-mvc-2
我一直在阅读REST,我正在试图找出使用它的优点.具体来说,REST样式的URL有哪些优势使它们值得在一个更典型的GET请求中使用查询字符串来实现?
为什么这个网址:
http://www.parts-depot.com/parts/getPart?id=00345
Run Code Online (Sandbox Code Playgroud)
认为不如此?
http://www.parts-depot.com/parts/00345
Run Code Online (Sandbox Code Playgroud)
在上面的例子中(从这里开始),第二个URL确实更加优雅,简洁.但它需要付出代价......第一个URL很容易用任何Web语言实现,开箱即用.第二个需要额外的代码和/或服务器配置来解析值,以及额外的文档和花时间向初级程序员解释系统并向同行证明它的合理性.
所以,我的问题是,除了让URL看起来很酷的乐趣之外,RESTful URL对我来说有什么好处可以使用它们值得实现成本?
说我有一个简单的功能:
def myfunc():
a = 4.2
b = 5.5
... many similar variables ...
Run Code Online (Sandbox Code Playgroud)
我只使用这个函数一次,我想知道什么是最简单的方法,使函数内的所有变量都可以访问我的主名称空间.
我是否必须为每个项目声明全局?或任何其他建议的方法?
谢谢.
将C结构成员声明为大小为1而不是指针的数组有什么好处:
struct {
a_struct_t a_member[1];
...
}b_struct;
Run Code Online (Sandbox Code Playgroud)
提前致谢
有没有办法在不知道命名空间的情况下搜索XDocument?我有一个记录所有SOAP请求并加密敏感数据的进程.我想根据名字找到任何元素.有点像,给我所有名称为CreditCard的元素.我不关心命名空间是什么.
我的问题似乎是LINQ并且需要一个xml命名空间.
我有其他从XML检索值的进程,但我知道这些其他进程的命名空间.
XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
XNamespace xNamespace = "http://CompanyName.AppName.Service.Contracts";
var elements = xDocument.Root
.DescendantsAndSelf()
.Elements()
.Where(d => d.Name == xNamespace + "CreditCardNumber");
Run Code Online (Sandbox Code Playgroud)
我真的希望能够在不知道名称空间的情况下搜索xml,如下所示:
XDocument xDocument = XDocument.Load(@"C:\temp\Packet.xml");
var elements = xDocument.Root
.DescendantsAndSelf()
.Elements()
.Where(d => d.Name == "CreditCardNumber")
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我在编译时事先不知道名称空间.
如何才能做到这一点?
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Request xmlns="http://CompanyName.AppName.Service.ContractA">
<Person>
<CreditCardNumber>83838</CreditCardNumber>
<FirstName>Tom</FirstName>
<LastName>Jackson</LastName>
</Person>
<Person>
<CreditCardNumber>789875</CreditCardNumber>
<FirstName>Chris</FirstName>
<LastName>Smith</LastName>
</Person>
...
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Request xmlns="http://CompanyName.AppName.Service.ContractsB">
<Transaction>
<CreditCardNumber>83838</CreditCardNumber>
<TransactionID>64588</FirstName>
</Transaction>
...
Run Code Online (Sandbox Code Playgroud) 我是.Net框架中的WPF新手(不用了).我正在编写一个应用程序,通过简单地将.xaml(当前是一个Page元素)文件加载到一个框架中然后根据需要通过名称映射控件,可以非常自定义界面.我们的想法是建立一个人们,他们有兴趣制作皮肤,然后按照他们想要的方式涂抹我的应用程序(很像Winamp).
现在问题出现了,由于我缺乏Xaml知识,是否有可能创建恶意的Xaml页面,在下载和使用时可能有其他嵌入式Iframe或其他可能嵌入html或调用带有恶意内容的远程网页的元素?我相信情况可能如此.
如果是这种情况那么我有两个选择; 要么我有一个自动化过程,可以通过在允许下载之前检查它的元素来删除这些类型的Xaml文件(我认为这将是最困难的),或者在下载之前对它们进行人工审核.有没有我不知道的替代方案可以使整个过程变得更容易?
从一个方法,我可以传递一个包含整数数组的结构,并更改数组中的值.我不确定我完全理解为什么我能做到这一点.有人可以解释为什么我可以更改存储在int []中的值吗?
private void DoIt(){
SearchInfo a = new SearchInfo();
a.Index = 1;
a.Map = new int[] { 1 };
SearchInfo b = new SearchInfo();
b.Index = 1;
b.Map = new int[] { 1 };
ModifyA(a);
ModifyB(ref b);
Debug.Assert(a.Index == 1);
Debug.Assert(a.Map[0] == 1, "why did this change?");
Debug.Assert(b.Index == 99);
Debug.Assert(b.Map[0] == 99);
}
void ModifyA(SearchInfo a) {
a.Index = 99;
a.Map[0] = 99;
}
void ModifyB(ref SearchInfo b) {
b.Index = 99;
b.Map[0] = 99;
}
struct SearchInfo …Run Code Online (Sandbox Code Playgroud) 我在jQuery UI选项卡中有一个SWF电影,而我遇到的问题是,每次我从标签点击另一个标签时,SWF都会重新加载,然后单击返回.我可以检查DOM并看到当我点击时,包含SWF的div仍然在DOM中,所以我不知道为什么当我点击返回选项卡时它似乎重新加载它.
我添加了以下CSS规则以尝试阻止将显示设置为:none,但Flash影片仍在重新加载:
.ui-tabs .ui-tabs-hide {
display: block !important;
position: absolute;
left: -10000px;
}
Run Code Online (Sandbox Code Playgroud)
更新:事实证明,这与自2001年/ Firefox 0.9以来一直存在的以下Firefox错误有关.然而,我仍然没有一个好的解决方法.
我当前的代码需要从Web读取外来字符,目前我的解决方案有效,但速度很慢,因为它使用InputStreamReader读取char字符.无论如何要加快速度并完成工作吗?
// Pull content stream from response
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
StringBuilder contents = new StringBuilder();
int ch;
InputStreamReader isr = new InputStreamReader(inputStream, "gb2312");
// FileInputStream file = new InputStream(is);
while( (ch = isr.read()) != -1)
contents.append((char)ch);
String encode = isr.getEncoding();
return contents.toString();
Run Code Online (Sandbox Code Playgroud) 关于在运行时动态生成和加载java字节码到运行的Dalvik VM,已经多次询问(和回答)这个问题,但有没有办法在运行时将dex文件/字节码加载到应用程序中?
谢谢
c# ×3
.net ×1
android ×1
apache-flex ×1
attributes ×1
c ×1
dalvik ×1
inputstream ×1
java ×1
jquery ×1
jquery-ui ×1
linq-to-xml ×1
python ×1
rest ×1
security ×1
struct ×1
url ×1
web-services ×1
wpf ×1