小编Pat*_*ick的帖子

为级联子列表构建一个空的MVC DropdownListFor

我想构建一个空的Dropdownlistfor以获得之前Dropdownlisfor选择的结果:

实际观点:

    <div id="makes">
        @Html.DropDownListFor(m => m.Make_Id, Model.MakeList, HeelpResources.DropdownlistMakeFirstRecord)
    </div>
    <div id="models">
        @Html.DropDownListFor(m => m.Model_Id, Model.ModelList, HeelpResources.DropdownlistModelFirstRecord)
    </div>        
Run Code Online (Sandbox Code Playgroud)

实际的控制器(工作我必须建立一个空的SelectedList,但似乎很奇怪必须这样做):

   public virtual ActionResult Create()
    {
        // Build the Dropdownlist for the Makes
        var makesDto = _makeService.ListAllMakes();
        var makesViewModel = Mapper.Map<IList<MakeDto>, IList<MakeViewModel>>(makesDto);

        // Build the Dropdownlist for the Models
        var makeId = -1;
        var modelsDto = _modelService.ListModelByMake(makeId);
        var modelsViewModel = Mapper.Map<IList<ModelDto>, IList<ModelViewModel>>(modelsDto);

        // Build the ViewModel to return to the View
        CreateAdViewModel viewModel = new CreateAdViewModel();
        viewModel.MakeList = new SelectList(makesViewModel, "ID", "Name"); …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc view html.dropdownlistfor

37
推荐指数
1
解决办法
4万
查看次数

Domain vs DTO vs ViewModel - 如何以及何时使用它们?

在具有域层(DL)/业务(服务)层(BL)/表示层(PL)的多层项目中,将实体传递到表示层的最佳方法是什么?

DO => Domain Object;
DTO = Domain Transfer Object;
VM => View Model;
V => View;
Run Code Online (Sandbox Code Playgroud)

选项1:

DL => DO => BL => DTO => PL => VM => V
Run Code Online (Sandbox Code Playgroud)

这个选项似乎是最佳实践,但似乎也很重要.

选项2:

DL => DO => BL => DTO => PL => V
Run Code Online (Sandbox Code Playgroud)

这个选项似乎不是很好的练习,但由于DTO与VM几乎完全相同,我们可以将它直接传递给View,实现和保护它不那么痛苦.

这个选项对于多个布局也是可靠的吗,例如,对于移动设备,我可能需要来自BL的较少信息,因此我需要为这个特定布局使用不同的VM?

asp.net-mvc entity-framework dto viewmodel automapper

27
推荐指数
2
解决办法
1万
查看次数

使用C#,只使用NLog和控制台应用程序发送一封包含所有错误的电子邮件

我只想发送一封电子邮件,其中包含我从C#控制台应用程序获得的所有错误.

我有目标:

<target xsi:type="File" name="HeelpAdsImport_log" fileName="${basedir}/logs/HeelpAdsImport-${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${callsite:className=true:includeSourcePath=true:methodName=true} ${message}" />

<target name="HeelpAdsImport_patrick_email" xsi:type="Mail"
        smtpServer="XXXXX"
        smtpPort="25"
        smtpAuthentication="Basic"
        smtpUserName="YYYYYY"
        smtpPassword="*ZZZZZZ"
        enableSsl="false"
        from="DDDDDDDDDD"
        to="EEEEEEEEEEE"
        layout="${longdate} ${uppercase:${level}} ${callsite:className=true:includeSourcePath=true:methodName=true} ${message}"
      />
Run Code Online (Sandbox Code Playgroud)

我有一个信息规则和一个错误规则:

<logger name="*" minlevel="Info" writeTo="HeelpAdsImport_log" />

<logger name="*" minlevel="Error" writeTo="HeelpAdsImport_patrick_email" />
Run Code Online (Sandbox Code Playgroud)

我在代码中有几个调用:

logger.Log(LogLevel.Info, " ----- New Ad Success! - auto.id: " + auto.id + " | auto.plate: " + auto.plate);

logger.Log(LogLevel.Error, "| continue error #4 - auto.id: " + auto.id);
Run Code Online (Sandbox Code Playgroud)

c# nlog

27
推荐指数
1
解决办法
5646
查看次数

Bootstrap 3 Datepicker和DateTime验证错误

我正在使用Bootstrap 3 Datepicker(http://eonasdan.github.io/bootstrap-datetimepicker/)为模型属性提供DateTime Picker:

模型:

[Table("Calls")]
public partial class Call
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required(ErrorMessage = "Campo obrigatório")]
    [Display(Name = "Data e Hora de início")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy HH:mm}")]
    public DateTime DateOfTheCall { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

视图:

<div class="form-group">
    @Html.LabelFor(model => model.DateOfTheCall, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.DateOfTheCall, new { htmlAttributes = new { @class = "form-control date" } })
        @Html.ValidationMessageFor(model …
Run Code Online (Sandbox Code Playgroud)

c# jquery datetime datepicker twitter-bootstrap

19
推荐指数
1
解决办法
2393
查看次数

Linq包含关键字的不同记录

我需要根据汽车关键字搜索返回一个独特的记录列表,如:"Alfa 147"

问题是,因为我有3辆"阿尔法"汽车,它会返回1 + 3条记录(阿尔法和147结果似乎为1,阿尔法结果为3)

编辑:

SQL-Server查询看起来像这样:

SELECT DISTINCT c.Id, c.Name /*, COUNT(Number of Ads in the KeywordAdCategories table with those 2 keywords) */
FROM Categories AS c
INNER JOIN KeywordAdCategories AS kac ON kac.Category_Id = c.Id
INNER JOIN KeywordAdCategories AS kac1 ON kac.Ad_Id = kac1.Ad_Id AND kac1.Keyword_Id = (SELECT Id FROM Keywords WHERE Name = 'ALFA')
INNER JOIN KeywordAdCategories AS kac2 ON kac1.Ad_Id = kac2.Ad_Id AND kac2.Keyword_Id = (SELECT Id FROM Keywords WHERE Name = '147')
Run Code Online (Sandbox Code Playgroud)

我的LINQ查询是:

       var query …
Run Code Online (Sandbox Code Playgroud)

c# linq sql-server asp.net-mvc entity-framework

15
推荐指数
2
解决办法
2759
查看次数

Google Analytics嵌入API服务器端授权不使用C#呈现图表

我试图在C#中使用服务器端授权来呈现图表,但我无法做到.

谷歌有一个例子,但基于Python,我需要基于C#MVC构建:https: //ga-dev-tools.appspot.com/embed-api/server-side-authorization/

我创建了服务帐户并下载了JSON文件:

的Controler

public class StatsController : Controller
{
    // GET: Stats
    public async Task<ActionResult> Index()
    {
        var json = "C:\\temp\\client_secrets.json";

        string[] scopes = new string[] { AnalyticsReportingService.Scope.AnalyticsReadonly }; // Put your scopes here

        var stream = new FileStream(json, FileMode.Open, FileAccess.Read);

        var credential = GoogleCredential.FromStream(stream);
        credential = credential.CreateScoped(scopes);

        try
        {
            Task<string> task = ((ITokenAccess)credential).GetAccessTokenForRequestAsync();
            task.Wait();
            var bearer = task.Result;

            ViewBag.Token = bearer;
        }
        catch (AggregateException ex)
        {
            throw ex.InnerException;
        }

        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

视图

<script> …
Run Code Online (Sandbox Code Playgroud)

javascript c# asp.net-mvc google-analytics google-oauth

14
推荐指数
1
解决办法
1642
查看次数

Theme.AppCompat.Light.NoActionBar.FullScreen不适用于Android 4.4

我正在尝试构建一个全屏应用程序,当我在Acer Iconia 8中运行它时,标题不显示但操作按钮仍然显示:

AndroidManifest.xml中

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen">
    <activity
        android:name=".MainActivity"
        android:windowSoftInputMode="adjustResize"
        android:configChanges="orientation|keyboardHidden">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

和风格:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
       <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

编辑:

主要活动类别:

public class MainActivity extends AppCompatActivity {

    private Context context;

    private WebView webView;
    private LoginDialog dialog;
    private PinDialog pin;
    private RelativeLayout mainLayout;

    @Override …
Run Code Online (Sandbox Code Playgroud)

android android-fullscreen android-4.4-kitkat

13
推荐指数
1
解决办法
2万
查看次数

根据一组关键字进行搜索

我需要根据一组关键字进行搜索,这些关键字会返回与这些关键字相关的所有广告.然后,结果是一个类别列表,其中包含每个类别的广告计数.

搜索在关键字搜索表中进行:

public class KeywordSearch
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Keyword Keyword { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

关键字表的位置是:

public class Keyword
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

广告与使用下表的关键字相关:

public class KeywordAdCategory
{
    [Key]
    [Column("Keyword_Id", Order = 0)]
    public int Keyword_Id { get; set; }

    [Key]
    [Column("Ad_Id", Order = 1)]
    public int Ad_Id { get; set; }

    [Key]
    [Column("Category_Id", Order …
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net-mvc entity-framework

12
推荐指数
1
解决办法
1694
查看次数

正确使用Microsoft.AspNet.Identity 2.0

我迷失了使用MVC 5模板附带的身份验证方法.

我需要将CreateBy用户包含在一个名为client的实体中,所以经过一些研究我得出了这个:

模型:

[Table("Clients")]
public partial class Client
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    public virtual int UserCreated_Id { get; set; }

    [ForeignKey("UserCreated_Id")]
    public virtual ApplicationUser UserCreated { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器方法:

client.UserCreated_Id = User.Identity.GetUserId<int>();
Run Code Online (Sandbox Code Playgroud)

但我必须改变身份模型中的几乎所有内容:

public class ApplicationUser : IdentityUser
Run Code Online (Sandbox Code Playgroud)

public class ApplicationUser : IdentityUser<int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
Run Code Online (Sandbox Code Playgroud)

因此,差不多有30个变化.

但现在我有2个DbContext:

身份背景:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{
    public ApplicationDbContext() : base("IPDB") {}

    public static ApplicationDbContext Create() …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc dbcontext asp.net-identity

12
推荐指数
1
解决办法
935
查看次数

在Ajax.BeginForm上显示加载器提交

在我们提交表单时,显示加载程序和禁用按钮的最佳方法是什么:

@using (Ajax.BeginForm(MVC.Account.Login(), new AjaxOptions { OnSuccess = "onLoginSuccess" }, new { @id = "loginForm" }))
{
  <div id="logbtn">
    <input type="submit" name="invisible" class="subinvisible"/> 
    <p>@HeelpResources.AccountLoginViewLoginButtonLabel</p>
    <img src="~/Content/Images/ui-symb-arrow-right-white-15x15.png" width="13" height="12" />
  </div>
}
Run Code Online (Sandbox Code Playgroud)

加载程序映像文件是

<img src="~/Content/Images/ui-loader-white-16x16.gif" />
Run Code Online (Sandbox Code Playgroud)

也许使用BeginForm中的OnBegin来显示加载器和OnComplete以隐藏它?但是我怎样才能改变图像呢?

任何消化找到质量好的免费装载机?

谢谢

javascript c# ajax asp.net-mvc jquery

10
推荐指数
1
解决办法
2万
查看次数