我想反序列化包含可以标记nil="true"
为具有类型属性的类的元素的XML消息int?
.我能让它工作的唯一方法是编写我自己的NullableInt
实现类型IXmlSerializable
.有没有更好的方法呢?
我写了完整的问题以及我在博客上解决它的方式.
我典型的git-svn工作流程是:
git checkout -b story-xyz
git commit -a -m "work"
git commit -a -m "more work"
git checkout master
git svn fetch
git merge remotes/trunk
git checkout story-xyz
git rebase master (sometimes with -i)
git checkout master
git merge story-xyz
Run Code Online (Sandbox Code Playgroud)
在这一点上,我让我的master
和story-xyz
分支指向同一个提交,提前一个或多个提交remotes/trunk
.从那以后remotes/trunk
,一切都在一个线性历史中.
last svn commit [remotes/trunk] <--- work <--- more work [master, story-xyz]
Run Code Online (Sandbox Code Playgroud)
然后我跑了
git svn dcommit
Run Code Online (Sandbox Code Playgroud)
我希望看到它们之间的提交remotes/trunk
并master
成为Subversion修订版,并最终得到一个单独的线性历史记录remotes/trunk
,master
并且story-xyz
都指向最新版本,如下所示:
last svn commit <--- work …
Run Code Online (Sandbox Code Playgroud) 当我使用默认模型绑定将表单参数绑定到作为操作参数的复杂对象时,框架会记住传递给第一个请求的值,这意味着对该操作的任何后续请求都会获得与第一个请求相同的数据.参数值和验证状态在不相关的Web请求之间保持不变.
这是我的控制器代码(service
表示访问应用程序的后端):
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
return View(RunTime.Default);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(RunTime newRunTime)
{
if (ModelState.IsValid)
{
service.CreateNewRun(newRunTime);
TempData["Message"] = "New run created";
return RedirectToAction("index");
}
return View(newRunTime);
}
Run Code Online (Sandbox Code Playgroud)
我的.aspx视图(强类型为ViewPage<RunTime
>)包含如下指令:
<%= Html.TextBox("newRunTime.Time", ViewData.Model.Time) %>
Run Code Online (Sandbox Code Playgroud)
这使用了DefaultModelBinder
类,它用于自动绑定我的模型的属性.
我点击页面,输入有效数据(例如时间= 1).应用程序正确保存新对象时间= 1.然后我再次点击它,输入不同的有效数据(例如时间= 2).但是,保存的数据是原始数据(例如,时间= 1).这也会影响验证,因此如果我的原始数据无效,那么我将来输入的所有数据都将被视为无效.重新启动IIS或重建我的代码会刷新持久状态.
我可以通过编写自己的硬编码模型绑定器来解决问题,其中一个基本的简单示例如下所示.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([ModelBinder(typeof (RunTimeBinder))] RunTime newRunTime)
{
if (ModelState.IsValid)
{
service.CreateNewRun(newRunTime);
TempData["Message"] = "New run created";
return RedirectToAction("index");
}
return View(newRunTime);
}
internal class RunTimeBinder : DefaultModelBinder
{ …
Run Code Online (Sandbox Code Playgroud) asp.net-mvc castle-windsor inversion-of-control defaultmodelbinder