我有以下示例:
<input type="text" class="input1" value="bla"/>
Run Code Online (Sandbox Code Playgroud)
有没有办法检查这个元素是否存在并且在一个语句中有值?或者,至少,任何更短的东西
if($('.input1').length > 0 && $('input1').val() != '')
Run Code Online (Sandbox Code Playgroud)
这里只有一英里长的条件让你感到沮丧.
我有以下两个功能:
public static string Serialize(object obj)
{
DataContractSerializer serializer = new DataContractSerializer(obj.GetType());
MemoryStream memoryStream = new MemoryStream();
serializer.WriteObject(memoryStream, obj);
return Encoding.UTF8.GetString(memoryStream.GetBuffer());
}
public static object Deserialize(string xml, Type toType)
{
MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(xml));
// memoryStream.Position = 0L;
XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(memoryStream, Encoding.UTF8, new XmlDictionaryReaderQuotas(), null);
DataContractSerializer dataContractSerializer = new DataContractSerializer(toType);
return dataContractSerializer.ReadObject(reader);
}
Run Code Online (Sandbox Code Playgroud)
第一个似乎将对象序列化为xml字符串就好了.XML显示有效,没有损坏的标记,开头或结尾没有空格等.现在第二个函数不希望将我的xml字符串反序列化回对象.在最后一行我得到:
反序列化[MY OBJECT TYPE HERE]类型的对象时出错.根级别的数据无效.第1行,第1位.
我究竟做错了什么?我尝试重写Deserialize函数几次,它似乎总是出现同样的错误.谢谢!
哦,这就是我调用2个函数的方式:
SomeObject so = new SomeObject();
string temp = SerializationManager.Serialize(so);
so = (SomeObject)SerializationManager.Deserialize(temp, typeof(SomeObject));
Run Code Online (Sandbox Code Playgroud) 请考虑以下事项:
public class MyObject
{
public bool B;
public string Txt;
}
List<MyObject> list; //list of a bunch of MyObject's
Run Code Online (Sandbox Code Playgroud)
使用lambda表达式,如何生成由这些对象的Txt的逗号分隔值组成的字符串,其中B为真?
谢谢.
我得到了一个定义布局的视图.在布局中,有一个部分:
@RenderSection("JavaScript", required: false)
在视图中,基于条件,我想要将某些JavaScript呈现给该部分.
@if (condition)
{
@section JavaScript
{
<script type="text/javascript>
$(document).ready(function(){
//bla...
});
</script>
}
}
Run Code Online (Sandbox Code Playgroud)
上面的语法错了.什么是正确的语法?
基本上,我得到了一个部分视图,需要根据条件进行渲染.如果条件为真,那么我需要将局部视图与部分JavaScript的部分视图一起渲染,我想转到"JavaScript"部分.我怎样才能做到这一点?
基本上我有一个锚元素, <a href='bla..'>link</a>
点击后,我首先想要做的事情,只有在完成后我才想把用户带到它链接到的页面.就像是:
$('a').click(function(ev){
ev.preventDefault();
//do something here
ev.refireDefault();
});
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我很抱歉!我的FireFox决定缓存以前版本的JS,所以我尝试过的只是一个简单的CTRL + F5解决了这个问题.
鉴于MVC3和Razor引擎,我得到了
_MasterLayout.cshtml
@RenderSection("JavaScript", required: false)
..
..
@RenderBody()
..
Run Code Online (Sandbox Code Playgroud)
View.cshtml与_ViewStart.cshtml中定义的_MasterLayout.cshtml
..
@Html.RenderAction("PartialView", "PartialController")
..
Run Code Online (Sandbox Code Playgroud)
PartialView.cshtml
..
@section JavaScript
{
........
}
..
Run Code Online (Sandbox Code Playgroud)
如何确保部分视图中的JavaScript最终出现在"主布局"部分中?
上述方案不起作用,因为局部视图没有定义主布局.另一方面,视图确实具有定义了RenderSection的布局.如果我将部分JavaScript从部分视图移动到View,Razor知道将其渲染到何处.但是,由于部分视图没有布局,因此它不知道如何处理部分JavaScript,因此不会将其呈现在任何地方.
我在Controller中有一个Action函数,它是用AJAX调用的.该行动涉及1个参数.客户端,我构造了一个JSON对象,它应该序列化为该1参数.我遇到的问题是参数类被声明为抽象.因此,它无法实例化.
当AJAX点击该Action时,我得到以下内容:
无法创建抽象类.
堆栈跟踪:
[MissingMethodException:无法创建的抽象类.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,布尔publicOnly,布尔NOCHECK,布尔逻辑canBeCached,RuntimeMethodHandleInternal&构造函数,布尔逻辑bNeedSecurityCheck)0
System.RuntimeType.CreateInstanceSlow(布尔publicOnly,布尔skipCheckThis,布尔fillCache )98
System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly,布尔skipVisibilityChecks,布尔skipCheckThis,布尔fillCache)241 System.Activator.CreateInstance(类型类型,布尔非公开)69 ............. ..
有没有办法在不创建不同参数对象的情况下实现这样的场景,"取消声明"参数对象为抽象,或者深入研究MVC的机制?
我目前正在与后端开发人员一起调整他们的对象.无论哪种方式,我认为这将是最终的解决方案.谢谢大家的答案.
我有Razor引擎的MVC 3 C#项目.有什么方法,我想,将动态数据写入_Layout.cshtml的最佳做法是什么?
例如,也许我想在我的网站的右上角显示用户名,并且该名称来自会话,数据库或其他任何基于用户登录的内容.
更新:我也在寻找将某些数据渲染到布局元素的良好实践.例如,如果我需要根据登录用户的凭据呈现特定的CSS文件.
(对于上面的例子,我想过使用Url Helpers.)
我有一堆不同的DTO课程.它们在某一点被序列化为XML字符串,并被射到Web应用程序的客户端.现在,当客户端回射XML字符串时,我需要将其反序列化回它所代表的DTO类的实例.问题是我想使它成为通用的,并且可能是一个接受xml字符串并吐出类型对象的函数.像这么长的东西:
public sometype? Deserialize (string xml)
{
//some code here
return objectFromXml;
}
Run Code Online (Sandbox Code Playgroud)
编辑:可怕的例子!我只是自相矛盾!
我做不到以下事情:
Person person = Deserialize(personXmlStringFromClient);
Run Code Online (Sandbox Code Playgroud)
因为我不知道personXmlStringFromClient是Person DTO对象实例的表示.
我不知道给了我什么序列化对象,这似乎是我的问题.我一直在阅读有关反射和其他技术的内容,这些技术涉及将类型粘贴到xml中,以便反序列化器知道如何处理它.我似乎无法将它们整合成一个工件.此外,在大多数示例中,作者知道反序列化后将会有什么类型.欢迎任何建议!如果我需要对序列化过程做一些特别的事情,请分享一下.
我正在寻找一种方法只将更改的表单字段提交给服务器.所以,假设我有一个表格
<form>
<input type="text" name="a"/>
<select name="b">...</select>
<input type="checkbox" name="c"/>
</form>
Run Code Online (Sandbox Code Playgroud)
已经填充了某些数据.用户编辑表单并单击"提交".如果用户只更改了输入b,那么我只想提交输入b.如果只更改了a和c,我只想提交a和c.等等.
我可以自己写一些东西来完成这个,但我想知道可能已经有一些我可以使用的东西了吗?理想情况下,我希望代码简短.像这样的东西是完美的:
$('form').serialize('select-only-changed');
Run Code Online (Sandbox Code Playgroud)
另外,我遇到了这个http://code.google.com/p/jquery-form-observe/,但我发现它存在问题.这个插件是否能够稳定运行?