我目前只是通过通用接口公开属性,例如
public interface IBaseClass
{
int ID { get; set; }
}
internal class MyBaseClass : IBaseClass
{
public MyBaseClass() { }
public int ID { get; set; }
}
public class MyExposedClass : IBaseClass
{
private MyBaseClass _base = new MyBaseClass();
public int ID
{
get { return _base.ID; }
set { _base.ID = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的主应用程序中我可以做到:
IBaseClass c = new MyExposedClass();
c.ID = 12345;
Run Code Online (Sandbox Code Playgroud)
但做不到:
MyBaseClass b = new MyBaseClass();
Run Code Online (Sandbox Code Playgroud)
这是我想要的行为.
但是,我只是想知道这是否是正确的方法?或者,如果有更好的方法?
我有一个用户控件,其中包含以下代码:
<form id="CurrencyForm" method="post" runat="server">
Display prices in
<asp:DropDownList ID="currency" runat="server" AutoPostBack="true">
<asp:ListItem Value="GBP">GBP (£)</asp:ListItem>
<asp:ListItem Value="USD">USD ($)</asp:ListItem>
<asp:ListItem Value="EUR">EUR (€)</asp:ListItem>
</asp:DropDownList>
</form>
Run Code Online (Sandbox Code Playgroud)
此用户控件包含在我的母版页中,因此可在网站的每个页面上使用.
这是代码隐藏:
protected void page_load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
currency.SelectedValue = (string)Session["currency"];
}
else
{
session["currency"] = currency.SelectedValue;
Response.Redirect(Request.RawUrl);
}
}
Run Code Online (Sandbox Code Playgroud)
当我更改下拉列表的选择时,将触发回发.然而,价值IsPostBack
似乎总是错误的.我不能完全理解我在这里做错了什么?
解
在查看大多数帖子的建议之后,我了解到我使用code_behind代码等而不是控制器时出错了.我想出了如何使用一个动作基本上重定向回到同一页面,所以以下是我现在拥有的:
用户控制:
<% using (Html.BeginForm("ChangeCurrency", "Home", FormMethod.Post)) {%>
Display prices in
<select id="currency" name="currency">
<option value="GBP">GBP (£)</option>
<option value="USD">USD ($)</option>
<option value="GBP">EUR (€)</option>
</select>
<input type="submit" value="change" /> // …
Run Code Online (Sandbox Code Playgroud) 进入C#.cshtml视图我有以下代码定义C#代码片段:
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/MasterPageMobile.cshtml";
}
Run Code Online (Sandbox Code Playgroud)
我还可以enum
在此部分中定义一个吗?
我有一个旧服务,我通过以下方式比较2个IP地址(当服务启动时):
if (IPAddress1.Address == IPAddress2.Address)
{
...
}
Run Code Online (Sandbox Code Playgroud)
它在2003服务器上安装并启动时始终工作正常,但现在当我尝试在2008服务器上安装它时,我得到以下异常:
服务无法启动.System.Net.Sockets.SocketException:System.Net.IPAddress.get_Address()引用的对象类型不支持尝试的操作
(奇怪的是,当尝试在客户端2008服务器上安装并启动它时,它工作).
问题是什么?
我正在Delphi 2009中开发一个计时器.我目前正在使用以下方法来格式化我的计时器显示:
Caption := Format('%.2d', [Hours]) + ':' +
Format('%.2d', [Minutes]) + ':' +
Format('%.2d', [Seconds]);
Run Code Online (Sandbox Code Playgroud)
这按预期显示时间为:
00:04:35
Run Code Online (Sandbox Code Playgroud)
但是,当我进入负面时间时,可以理解地将其显示为:
00:-04:-35
Run Code Online (Sandbox Code Playgroud)
我需要时间显示为:
-00:04:35
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有以下表架构
我想要做的是返回所有发票以及以下汇总总数
SUM(UnitPrice * Qty)
)SUM(Amount)
)鉴于发票可以在没有任何行项目或额外成本的情况下存在,我认为我在这里需要做的就是使用LEFT OUTER JOIN
ie
SELECT i.*, SUM(li.UnitPrice * li.Qty) As [Sub Total], SUM(ac.Amount) As [AdditionalCosts]
FROM Invoice i
LEFT OUTER JOIN LineItem li ON li.InvoiceId = i.Id
LEFT OUTER JOIN AdditionalCost ac ON ac.InvoiceId = i.Id
GROUP BY i.Id
Run Code Online (Sandbox Code Playgroud)
但问题是,如果两个子表的长度不同(例如,我有4个行项目,但只有1个额外成本),额外成本的数据会在额外的行项目行中重复(反之亦然),您可以通过删除来验证这一点GROUP BY
.
所以会有效地发生以下记录
Invoice
-------
400001
LineItem
---------
400001 | 2000 | 100 | 1
400001 | 2001 | 50 | 2
400001 | 2002 | 10 | …
Run Code Online (Sandbox Code Playgroud) 以下是正确的做法?
它是第一个还是第二个,还是两个都是正确的?
string strName=" Avinash ";
strName=strName.Trim();
Run Code Online (Sandbox Code Playgroud)
(要么)
string strName="Avinash";
string strTrimmedname=string.empty;
strTrimmedname=strName.Trim();
Run Code Online (Sandbox Code Playgroud)
更新:
不需要原始值,我只需要修剪字符串.我只是感到困惑,因为它不正确java.
.
c# ×4
asp.net-mvc ×1
cookies ×1
delphi ×1
delphi-2009 ×1
javascript ×1
php ×1
razor ×1
sql ×1
sqlite ×1
string ×1
trim ×1