我有一个涉及杂草和杂草家庭的简单数据模型.
WeedFamily <-1---*-> Weed (WeedFamily和Weed有一对多的关系)
我正在尝试完成我的第一个ApiController,以便我可以轻松地将我的数据检索为AngularJS应用程序的JSON.当我/WeedAPI/在我的应用程序中访问URL时,出现以下错误.我很确定问题是我Weed和之间有循环引用WeedFamily.
我应该如何改变我的数据模型,使JSON序列化将同时保持的双向质量工作Weed- WeedFamily的关系?
(即我仍然希望能够构建如下表达式:
WeedData.GetFamilies()["mustard"].Weeds.Count
Run Code Online (Sandbox Code Playgroud)
和
WeedData.GetWeeds()[3].Family.Weeds
Run Code Online (Sandbox Code Playgroud)
)
错误:
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace/>
<InnerException>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Object graph for type 'WeedCards.Models.WeedFamily' contains cycles and cannot be serialized if reference tracking is disabled.
</ExceptionMessage>
<ExceptionType>
System.Runtime.Serialization.SerializationException
</ExceptionType>
<StackTrace>
at System.Runtime.Serialization.XmlObjectSerializerWriteContext.OnHandleReference(XmlWriterDelegator xmlWriter, Object obj, Boolean canContainCyclicReference) …Run Code Online (Sandbox Code Playgroud) 我在C#Web Forms应用程序中使用Razor Helpers .
以下代码在调用时编译并呈现A-OK:
@helper MemberListItem(string firstname, string lastname, string avatarUrl)
{
<li>
@firstname @lastname
@avatarUrl
</li>
}
Run Code Online (Sandbox Code Playgroud)
输出(两次调用助手):
<li>Bryan Arnold ../../Resources/Images/Placeholders/generic-user-image.jpg</li>
<li>Doug Bland ../../Resources/Images/Placeholders/generic-user-image.jpg</li>
Run Code Online (Sandbox Code Playgroud)
但是,当我改变助手,以便avatarUrl被放置在src一个属性img标签,我得到一个NullReferenceException上firstname.是的,NullReferenceException是的firstname.
以下代码编译但在调用时抛出NRE:
@helper MemberListItem(string firstname, string lastname, string avatarUrl)
{
<li>
@firstname @lastname
<img src="@avatarUrl"/>
</li>
}
Run Code Online (Sandbox Code Playgroud)
请记住,除了帮助程序中的位置之外,我不会更改任何内容@avatarUrl.
如何显示图像?
更新1:
我也试过包装我的img代码<text></text>(无济于事):
<li>
@firstname @lastname
<text>
<img src="@avatarUrl"/>
</text>
</li>
Run Code Online (Sandbox Code Playgroud)
更新2: 这是错误:
Object …Run Code Online (Sandbox Code Playgroud) 所以,我已经沉迷于f#的计算表达式和自定义构建器.我必须在日常工作的大部分时间里使用c#,但仍然希望将LINQ表达式与我自己的monads/monoids一起使用.有没有人知道是否有ac#analog to f#Zero方法?
这是我在f#中所做的:
type OptionBuilder() =
member x.Bind(v,f) = Option.bind f v
member x.Return v = Some v
member x.ReturnFrom o = o
member x.Zero() = Option.None
let option = OptionBuilder()
// Example usage (I want something similar from c#)
let t : Option<int> =
option { if false then return 5 }
Run Code Online (Sandbox Code Playgroud) 我有一组排名,按组和排名排序:
Group | Rank
------------
A | 1
A | 2
A | 3
A | 4
A | 5
A | 6
B | 1
B | 2
B | 3
B | 4
C | 1
C | 2
C | 3
C | 4
C | 5
D | 1
D | 2
D | 3
D | 4
Run Code Online (Sandbox Code Playgroud)
我想交换组,按组和排名排序,每组n个排名(这里,n = 2):
Group | Rank
------------
A | 1
A | 2
B | 1 …Run Code Online (Sandbox Code Playgroud) 我尝试使用此代码显示已检查的复选框的数量
<li class="list-group-item" ng-repeat="user in data">
<input type="checkbox" ng-model="user.checked"/>
{{user.name}}
</li>
<p>total checked: {{user.checked.length}}</p>
Run Code Online (Sandbox Code Playgroud)
我也在{{}}内尝试了count()但是没有用.
我正在尝试添加带有控件的 Google Maps Traffic Layer,由于我对此很陌生,因此无法弄清楚。我已经通过一些微调从互联网上获得了以下脚本,但我无法弄清楚如何将控件放入地图。我只需要一种方法来为普通用户打开和关闭交通层,所以如果有比将控件添加到地图更好的方法,我愿意做任何事情。谢谢。
var map;
var chicago = new google.maps.LatLngBounds();
function HomeControl(controlDiv, map) {
controlDiv.style.padding = '5px';
var controlUI = document.createElement('div');
controlUI.style.backgroundColor = 'white';
controlUI.style.borderStyle = 'solid';
controlUI.style.borderWidth = '2px';
controlUI.style.cursor = 'pointer';
controlUI.style.textAlign = 'center';
controlUI.title = 'Click to set the map to Home';
controlDiv.appendChild(conrolUI);
var controlText = document.createElement('div');
controlText.style.fontFamily = 'Arial.sans-serif';
controlText.style.fontSize = '12px';
controlText.style.paddingLeft = '4px';
controlText.style.paddingRight = '4px';
controlText.innerHTML = '<b>Home</b>';
controlUI.appendChild(controlText);
googlemaps.event.addDomListener(controlUI, 'click', function() {
map.setCenter(chicago)
});
}
function addtrafficlayer() {
var myLatlng …Run Code Online (Sandbox Code Playgroud) c# ×3
javascript ×2
angularjs ×1
f# ×1
html ×1
monoids ×1
oop ×1
razor ×1
razor-2 ×1
sql ×1
sql-order-by ×1
sql-server ×1
webforms ×1