我在表格的下拉框中有一个Payees列表.我想根据收款人下拉列表的选定项目填充不同的下拉菜单,而不是回发邮件等等.
所以,我在我的控制器中创建了一个方法来完成工作:
private JsonResult GetCategories(int payeeId)
{
List<CategoryDto> cats = Services.CategoryServices.GetCategoriesByPayeeId(payeeId);
List<SelectListItem> items = new List<SelectListItem>();
foreach(var cat in cats)
{
items.Add(new SelectListItem {Text = cat.Description, Value = cat.CategoryId.ToString()});
}
return Json(items);
}
Run Code Online (Sandbox Code Playgroud)
现在,我不确定要添加到我的视图中以使其工作.
目前,我所拥有的只是:
<% using (Html.BeginForm())
{%>
<p>
<%=Html.DropDownList("SelectedAccountId", Model.Accounts, "Select One..", null) %>
</p>
<p>
<%=Html.DropDownList("SelectedPayeeId", Model.Payees, "Select One...", null) %>
</p>
<input type="submit" value="Save" />
<%
}%>
Run Code Online (Sandbox Code Playgroud)
它们填充得很好......所以当用户选择SelectedPayeeId下拉列表时,它应该根据SelectedPayeeId填充一个新的(尚未创建?)下拉列表,该下拉列表包含类别.
所以,我认为我需要创建一个JQuery函数(从未完成JQuery ..所以甚至不确定它去哪里)哪个监视onchange事件的Payee下拉?然后调用我在上面创建的方法.这听起来是对的,如果是的话,你可以指导我如何实现这个目标吗?
我从未听说过,但人们将应用程序中的问题称为“N+1 问题”。他们正在做一个基于 Linq to SQL 的项目,有人发现了一个性能问题。我不太明白 - 但希望有人能引导我。
似乎他们正在尝试获取 obects 列表,然后在此之后的 Foreach 导致过多的数据库命中:
据我了解,源代码的第二部分仅在 forwach 中加载。
因此,加载的项目列表:
var program = programRepository.SingleOrDefault(r => r.ProgramDetailId == programDetailId);
Run Code Online (Sandbox Code Playgroud)
然后,我们使用这个列表:
foreach (var phase in program.Program_Phases)
{
phase.Program_Stages.AddRange(stages.Where(s => s.PhaseId == phase.PhaseId));
phase.Program_Stages.ForEach(s =>
{
s.Program_Modules.AddRange(modules.Where(m => m.StageId == s.StageId));
});
phase.Program_Modules.AddRange(modules.Where(m => m.PhaseId == phase.PhaseId));
}
Run Code Online (Sandbox Code Playgroud)
似乎确定的问题是,他们希望“程序”包含它的孩子。但是当我们在查询中引用孩子时,它会重新加载程序:
program.Program_Phases
Run Code Online (Sandbox Code Playgroud)
他们期望程序完全加载并在内存中,并且分析器似乎表明该程序表,所有连接都在每个“foreach”上被调用。
这有意义吗?
(编辑:我找到了这个链接: linq to sql 会自动延迟加载关联实体吗? 这可能会回答我的问题,但是 .. 他们正在使用更好的 (where person in...) 符号,而不是这个奇怪的 (x => x....)所以如果这个链接是答案——也就是说,我们需要“加入”查询——可以做到吗?)
我们正在将VB6应用程序转换为C#(4.0).并且在VB6中遇到了我们正在努力理解的方法.
Public Sub SaveToField(fldAttach As ADODB.Field)
Dim bData() As Byte
Dim nSize As Long
nSize = Len(m_sEmail)
bData = LngToByteArray(nSize)
fldAttach.AppendChunk bData
If nSize > 0 Then
bData = StringToByteArray(m_sEmail)
fldAttach.AppendChunk bData
End If
nSize = Len(m_sName)
bData = LngToByteArray(nSize)
fldAttach.AppendChunk bData
If nSize > 0 Then
bData = StringToByteArray(m_sName)
fldAttach.AppendChunk bData
End If
bData = LngToByteArray(m_nContactID)
fldAttach.AppendChunk bData
End Sub
Run Code Online (Sandbox Code Playgroud)
看起来它正在做一些二进制文件复制类型的东西,但我不太了解.有人可以解释一下,我们可以重写它吗?
我接管了另一个开发人员编写的应用程序,该应用程序从数据库中读取数据并将其导出.
开发人员使用DataTables和DataAdaptors.
所以,
_dataAdapter = new SqlDataAdapter("Select * From C....", myConnection);
Run Code Online (Sandbox Code Playgroud)
然后
ExtractedData = new DataTable("CreditCards");
_dataAdapter.Fill(ExtractedData);
Run Code Online (Sandbox Code Playgroud)
然后传递ExtractedData以执行不同的功能.
我现在被告知,除此之外,我需要从一些逗号分隔的文本文件中获取相同格式的数据.应用程序执行相同的处理 - 它只是从两个来源获取数据.
所以,我想知道我是否可以将数据读入DataTable,如上所述,然后从CSV文件中添加更多记录.
这可能吗?
我只是在学习WCF服务.我有一个方法返回我创建的名为GPSPosition的对象.GPS位置对象具有纬度和经度.没有这些属性,对象永远不应该存在.所以,我想让构造函数接受Lat和Long浮点数.因此,在创建对象时,将设置值,并且永远不会无效(Unset).
但是,它是我的WCF服务的一个对象.可以作为我的调用应用程序使用的WCF服务对象有一个构造函数吗?如果我var position = new GpsPosition{ lat=1, lon=1 };在我的调用代码中,构造函数是否可以工作?你能在WCF类中拥有构造函数吗?
我认为它们是在不同语言之间共享的 - 例如,如果Java使用该服务,我不确定构造函数将如何触发.对象结构与调用应用程序共享,不是吗?你可以在构造函数中启动.net代码(对于那种情况,还有getter和setter方法)?
如果构造函数不可用 - 有没有办法确保我的对象永远无效?(必须在-180和+180之间有有效的纬度/经度值)?
我有一个MVC模型,其属性定义为:
[DisplayName("Service Version")]
public string ServiceVersion { get; set; }
Run Code Online (Sandbox Code Playgroud)
在屏幕上,我希望它显示为:
服务版本:0.1
'ServiceVersion'具有版本号.
在视图中,我有:
@model Main_UI.Models.HomeModel
Run Code Online (Sandbox Code Playgroud)
然后:
@Html.LabelFor(m=>m.ServiceVersion) @Html.DisplayText(Model.ServiceVersion)
Run Code Online (Sandbox Code Playgroud)
这是不正确的,因为我没有为值部分显示任何内容.出现标签,但没有版本号.我究竟做错了什么?
编辑:更改
@ Html.DisplayText(Model.ServiceVersion)
,只是
@ Model.ServiceVersion
修好了.这是正确的方法吗?
有人问过,但我正在努力掌握如何在网络应用中处理时区的概念.我有一个跟踪项目进度的系统.我的SQL Server数据库中有一个ProjectStartDate DATE.(还有一些字段和表格,但让我们关注一个).
服务器位于美国的某个地方.我住在澳大利亚.
致电SELECT GETDATE()返回"2013-08-11 14:40:50.630"我的系统时钟显示"2013-08-12 07:40"
在我的数据库中,我在所有表上都有'CreateDateTime'列.当我存储它时,在我的c#代码中,我使用CreateDate = DateTime.UtcNow
我使用它,因为我听说使用UTC更好.
但是,当向用户显示日历控件并为项目选择开始日期时,我会存储用户选择的内容.没有转换......正如我所说,StartDate是数据库中的DATE类型.
问题是,如果一个项目今天开始 - 我的前端说当前项目是No Started,因为服务器仍然在昨天.
我认为日期应该存储,因为我存储它们.但也许我需要以某种方式获取用户时区,并在UI级别应用它?
我看到的问题是:
我使用EntityFramework和Linq来获取大部分时间的数据.我需要一种从SQL意义和.Net意义上插入和检索数据的策略.
我添加了代码以让用户根据此选择他们的时区:
public List<TimeZoneDto> GetTimeZones()
{
var zones = TimeZoneInfo.GetSystemTimeZones();
var result = zones.Select(tz => new TimeZoneDto
{
Id = tz.Id,
Description = tz.DisplayName
}).ToList();
return result;
}
Run Code Online (Sandbox Code Playgroud)
然后,这就是他们的个人资料.
所有日期都以UTC格式存储,如下面的答案所示.
我仍然很困惑如何处理他们往返数据库和客户端的日期.以下是我存储记录的示例:
public int SaveNonAvailibility(PersonNonAvailibilityDto n)
{
person_non_availibility o;
if (n.Id == 0)
{
o = new person_non_availibility
{
PersonId = n.PersonId,
Reason = …Run Code Online (Sandbox Code Playgroud) 尝试从我的数据库发送邮件时收到权限错误.
我推荐了proker服务:
-- Enable Broker on Initiator
ALTER DATABASE A-DB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE A-DB SET ENABLE_BROKER;
ALTER AUTHORIZATION ON DATABASE::A-DB TO [sa];
ALTER DATABASE A-DB SET TRUSTWORTHY ON;
ALTER DATABASE A-DB SET MULTI_USER;
GO
Run Code Online (Sandbox Code Playgroud)
然后我创建队列和所有...
当我尝试发送消息时,我在sys.transmission_queue中看到以下错误:
在目标队列中排队消息时发生异常.错误:916,状态:3.服务器主体"sa"无法访问当前安全上下文下的数据库"MYDBNAME".
(其中MYDBNAME是我们正在使用的数据库的名称)
我认为错误是由这一行引起的:
更改数据库上的授权:: A-DB TO [sa];
那可能是件坏事.但是,我可以更改授权以将其恢复到原来的状态吗?我认为这将是'dbo',但那不对.是否应该设置为谁创建了数据库?
我有一个字节[8],实际上是一个序号.它来自数据库中的RowVersion.
我真的只关心8字节数组的最后4个字节.
我想这样做:
Version = BitConverter.ToDouble(t.Version,4)
Run Code Online (Sandbox Code Playgroud)
'版本'是双倍的.但是,我得到一个错误说:
目标数组不够长,无法复制集合中的所有项目.检查数组索引和长度.
我的'版本'的价值是:
[0] 0 [1] 0 [2] 0 [3] 0 [4] 0 [5] 0 [6] 12 [7] 102
我究竟做错了什么?
我正在尝试我的第一个 Blazor 应用程序,客户端,并且正在与身份验证作斗争。我已经设法调用我的 API,获取令牌并在应用程序中进行身份验证。我需要将 JWT 令牌存储在某个地方 - 我认为,在声明中,可能没问题。(也许这是我出错的地方,应该以某种方式在 LocalStorage 或其他地方?)
因此,对于我的授权,我有一个AuthenticationStateProvider, where - 一切正常。我得到认证。但我无法访问我的令牌。
这是添加它的正确位置吗?如果是这样,为什么这段代码让我失望?
public class CustomAuthenticationStaterProvider : AuthenticationStateProvider
{
public override Task<AuthenticationState> GetAuthenticationStateAsync()
{
var identity = new ClaimsIdentity();
var user = new ClaimsPrincipal(identity);
return Task.FromResult(new AuthenticationState(user));
}
public void AuthenticateUser(AuthenticationResponse request)
{
if (request.ResponseDetails.IsSuccess == false)
return;
var identity = new ClaimsIdentity(new[]
{
new Claim("token", request.Token),
new Claim(ClaimTypes.Email, request.Email),
new Claim(ClaimTypes.Name, $"{request.Firstname} {request.Surname}"),
}, "apiauth_type");
var user = new ClaimsPrincipal(identity);
NotifyAuthenticationStateChanged(Task.FromResult(new AuthenticationState(user)));
}
public void …Run Code Online (Sandbox Code Playgroud) c# ×8
asp.net-mvc ×2
sql-server ×2
asp.net ×1
asp.net-core ×1
blazor ×1
datatable ×1
jquery ×1
json ×1
linq-to-sql ×1
timezone ×1
vb6 ×1
wcf ×1