我希望能够在同一视图中更新模型及其所有子对象集合.我已经参考了这些例子:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx和http://blog.stevensanderson.com/2010/01/ 28/editing-a-variable-length-list-aspnet-mvc-2-style /.
例如,我有一个对象顾问,它有一个"WorkExperiences"的集合.所有这些都在实体框架模型中.在视图中,Consultant对象的简单属性没有问题,但是我无法获得要显示的文本框的集合.我尝试按照上面的链接中的示例,但它不起作用.问题是,在这些示例中,模型只是一个列表(不是具有子列表属性的对象).而且,该模型再次是EF模型.由于某种原因,似乎在这些例子中不起作用.
为了简单起见,我尝试按照Phil Haacks的例子做一些事情,然后让View显示文本框:
@for (int i = 0; i < Model.WorkExperiences.Count; i++)
{
Html.TextBoxFor(m => m.WorkExperiences[i].Name);
}
Run Code Online (Sandbox Code Playgroud)
我试图在控制器中为ViewModel创建一个新的WorkExperience对象:
public ActionResult Create(int id)
{
Consultant consultant = _repository.GetConsultant(id);
DetailsViewModel vm = new DetailsViewModel();
vm.WorkExperiences = consultant.WorkExperiences.ToList();
vm.WorkExperiences.Add(new WorkExperience());
return View(vm);
}
Run Code Online (Sandbox Code Playgroud)
但View不显示WorkExperience Name属性的任何空文本框.另一方面,我创建一个单独的View只是为了添加一个新的WorkExperience对象,传递一个新的空WorkExperience对象作为模型,这很好:
@Html.EditorFor(model => model.Name)
Run Code Online (Sandbox Code Playgroud)
这给了我一个空文本框,我可以保存新对象.但是为什么我不能在与Consultant对象相同的视图中执行此操作,根据上面链接中的示例使用集合?
顺便说一句,这是对早期问题的一个后续问题,它向我指出了上述链接,但我从来没有找到它的最终解决方案.如果需要更多信息,请查看该问题:在MVC 3应用程序的模型中为对象属性创建视图?
更新:
根据下面的答案和评论,这里是View和EditorTemplate的更新:
风景:
@model Consultants.ViewModels.DetailsViewModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Add work experience", "CreateWorkExperience", new { id = ViewBag.Consultant.Id }) …Run Code Online (Sandbox Code Playgroud) 情况就是这样:
我有一个可配置的产品,有几个简单的产品.这些简单的产品需要与可配置产品具有相同的产品图像.目前,我必须一遍又一遍地将相同的图像上传到每个简单的产品.
有没有办法将可配置产品的产品图像链接到简单的产品?
我的一些产品在一个可配置的产品中有30个简单的产品,上传相同的图像30次是太过分/烦人.
我希望有人可以帮我解决这个问题!
提前致谢!
据我所知,Servlet 3规范引入了异步处理功能.除此之外,这意味着可以并且将重用相同的线程来处理另一个并发的HTTP请求.这不是革命性的,至少对于之前与NIO合作的人来说至少是这样.
无论如何,这导致另一个重要的事情:没有ThreadLocal变量作为请求数据的临时存储.因为如果同一个线程突然成为另一个HTTP请求的运营商线程,请求本地数据将暴露给另一个请求.
所有这些都是基于阅读文章的纯粹推测,我没有时间玩任何Servlet 3实现(Tomcat 7,GlassFish 3.0.X等).
所以,问题:
ThreadLocal将不再是一个方便的黑客来保存请求数据?ThreadLocals来证明上述内容?编辑:别误会我的意思.我完全理解危险并ThreadLocal成为黑客.事实上,我总是建议不要在类似的环境中使用它.但是,不管你信不信,线程上下文的使用频率比你想象的要频繁得多.一个很好的例子是Spring的OpenSessionInViewFilter,根据它的Javadoc:
此过滤器通过当前线程使Hibernate会话可用,该线程将由事务管理器自动检测.
这不是严格的ThreadLocal(没有检查来源),但已经听起来令人震惊.我可以想到更多类似的场景,而且丰富的Web框架使得这种情况更有可能发生.
简而言之,许多人在这个黑客的基础上建造了他们的沙堡,无论是否有意识.因此,斯蒂芬的答案是可以理解的,但并不完全是我所追求的.我想得到一个确认是否有人真正尝试并能够重现失败的行为,所以这个问题可以作为被同一问题困扰的其他人的参考点.
我有这样的事情:
string[] names= {"john","joe", "jim"};
data="john,4,3,6,joe,3,6,2,jim,3,6,7";
string[] results=data.Split(names,StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)
这给了:
,4,3,6
,3,6,2
,3,6,7
Run Code Online (Sandbox Code Playgroud)
但我希望名称也在结果数组中.
我知道各种对象的某些"特殊"方法表示通常用运算符执行的操作(即int.__add__+,object.__eq__for ==等),其中一个是list.__setitem,它可以为一个值赋值列表元素.但是,我需要一个可以将列表分配到另一个列表的切片的函数.
基本上,我正在寻找相当于的表达式some_list[2:4] = [2, 3].
我正在开发一个PHP网站,让用户上传图像然后让他决定图像应该如何使用jQuery - PHP整合来选择想要成为图片的区域,然后单击裁剪按钮来裁剪它和保存.
我面临的问题是,并非所有图像类型都能很好地裁剪和保存,所以我注意到它可以很容易地将图像转换为JPG,然后让用户裁剪它,因为它是一种简单的方法. JPG格式.
我怎么能这样做?
这是图像类型问题的最佳解决方案吗?
编辑:
我正在使用此代码裁剪图像,它不是以PNG格式拍摄,也仅限于3分机.
$path_parts = pathinfo("../images/DVDs/".$_POST['logo_file']);
if ($path_parts['extension'] == "png") {
$src = imagecreatefrompng("../images/DVDs/".$_POST['logo_file']);
$tmp = imagecreatetruecolor(350, 494);
imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],350,494,$_POST['w'],$_POST['h']);
imagepng($tmp, "../images/DVDs/$filename".'t_'.$_POST['logo_file'],100);
} else if ($path_parts['extension'] == "jpg" || $path_parts['extension'] == "jpeg") {
$src = imagecreatefromjpeg("../images/DVDs/".$_POST['logo_file']);
$tmp = imagecreatetruecolor(350, 494);
imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],350,494,$_POST['w'],$_POST['h']);
imagejpeg($tmp, "../images/DVDs/$filename".'t_'.$_POST['logo_file'],100);
} else if ($path_parts['extension'] == "gif") {
$src = imagecreatefromgif("../images/DVDs/".$_POST['logo_file']);
$tmp = imagecreatetruecolor(350, 494);
imagecopyresampled($tmp, $src, 0,0,$_POST['x'],$_POST['y'],350,494,$_POST['w'],$_POST['h']);
imagegif($tmp, "../images/DVDs/$filename".'t_'.$_POST['logo_file'],100);
}
Run Code Online (Sandbox Code Playgroud)
我想将图像转换为JPG格式,因为它最容易转换而没有任何问题.
我继承了一些目前使用C++ Builder 2007编译的Delphi组件/代码.我现在只是尝试使用C++ Builder RAD XE编译组件.我不知道Delphi(对象pascal).
以下是似乎存在冲突的"支持"功能的版本.是否有可用于使RAD XE向后兼容的编译器开关?或者我可以对这些函数调用做些什么来纠正模糊性质?
我得到的错误是:
[DCC Error] cxClasses.pas(566): E2251 Ambiguous overloaded call to 'Supports'
SysUtils.pas(19662): Related method: function Supports(const TObject; const TGUID; out): Boolean;
cxClasses.pas(467): Related method: function Supports(TObject; const TGUID; out): Boolean;
{$IFNDEF DELPHI5}
procedure FreeAndNil(var Obj);
var
Temp: TObject;
begin
Temp := TObject(Obj);
Pointer(Obj) := nil;
Temp.Free;
end;
function Supports(const Instance: IUnknown; const Intf: TGUID; out Inst): Boolean; overload;
begin
Result := (Instance <> nil) and (Instance.QueryInterface(Intf, Inst) = 0);
end;
function Supports(Instance: TObject; …Run Code Online (Sandbox Code Playgroud) 我想完成两件事.首先,如果我有一个向量,1:5我想得到一个矩阵(或两个向量),表示这些元素的唯一组合,包括两倍相同的数字,但不包括重复.
现在我可以使用矩阵来做到这一点:
foo <- matrix(1:5,5,5)
cbind(foo[upper.tri(foo,diag=TRUE)],foo[lower.tri(foo,diag=TRUE)])
[,1] [,2]
[1,] 1 1
[2,] 1 2
[3,] 2 3
[4,] 1 4
[5,] 2 5
[6,] 3 2
[7,] 1 3
[8,] 2 4
[9,] 3 5
[10,] 4 3
[11,] 1 4
[12,] 2 5
[13,] 3 4
[14,] 4 5
[15,] 5 5
Run Code Online (Sandbox Code Playgroud)
但必须有一个更简单的方法.我试图用Vectorize的seq,但是这给了我一个错误:
cbind(Vectorize(seq,"from")(1:5,5),Vectorize(seq,"to")(5,1:5))
Error in Vectorize(seq, "from") :
must specify formal argument names to vectorize
Run Code Online (Sandbox Code Playgroud)
我要做的第二件事是如果我有一个包含向量的列表bar,以获得一个包含重复列表元素的向量,该向量等于该元素中元素的数量.我可以这样做:
unlist(apply(rbind(1:length(bar),sapply(bar,length)),2,function(x)rep(x[1],x[2])))
[1] 1 1 …Run Code Online (Sandbox Code Playgroud) 我有一个按钮的样式,当鼠标悬停时它应该增长到1.5倍.问题是Button从左上角而不是中心增长.有谁知道如何解决这一问题?
<Style x:Key="sizeButton" TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="1.5" ScaleY="1.5"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
尝试过Henk Holterman提供的解决方案,但我无法使用以下代码.它似乎没有效果或我做错了吗?
<Window.Resources>
<Style x:Key="sizeButton" TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.5" ScaleY="1.5"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<Button Content="Increase Size" Width="100" Height="50" Style="{StaticResource sizeButton}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud) 我正在努力学习static_cast和reinterpret_cast.
如果我是正确的,标准(9.2.18)说reinterpret_castpod数据是安全的:
指向POD结构对象的指针(适当地使用a转换)
reinterpret_cast指向其初始成员(或者如果该成员是位字段,则指向它所驻留的单元),反之亦然.[注意:因此,在POD-struct对象中可能存在未命名的填充,但不是在其开头,以实现适当的对齐. - 结束说明]
我的问题是如何严格解释这一点.例如,布局兼容性足够吗?如果没有,为什么不呢?
对我来说,以下示例显示了严格的"仅POD有效"解释似乎是错误的示例.
class complex_base // a POD-class (I believe)
{
public:
double m_data[2];
};
class complex : public complex_base
{ //Not a POD-class (due to constructor and inheritance)
public:
complex(const double real, const double imag);
}
double* d = new double[4];
//I believe the following are valid because complex_base is POD
complex_base& cb1 = reinterpret_cast<complex_base&>(d[0]);
complex_base& cb2 = reinterpret_cast<complex_base&>(d[2]);
//Does the following complete a valid cast …Run Code Online (Sandbox Code Playgroud)