четверг, 14 марта 2013 г.

Removing implicit validation

Assume that we have a model
public class Order
{
    [DisplayName("Purpose")]
    public string purpose { get; set; }

    [DisplayName("Tasks")]
    public string tasks { get; set; }
}
As we can see none of these fields have "Reguired" attribute. Any when you look at HTML source code in you browser you could find: data-val-required="The Purposefield is required." To remove this attribute just add the line into Application_Start method in Global.asax.cs file:
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

Asp.net MVC. How to get rid of /home/ in url

Assume we want to have an url to the Contacts page like mysite/Contacts instead of mysite/Home/Contacts

First of all open RouteConfig.cs under App_Start folder.

      public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute("HomeRemover", "{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }); // add this
            routes.MapRoute("Home", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
        }
That's all.

пятница, 4 января 2013 г.

Where are MVVM light project templates?

Recently I came across with a problem. The problem was that after installing galasoft mvvm toolkit I didn't find any project templates in my VS2010 pro.
To fix it we need to go to YOUR_DISK_DRIVE:\My documents\Expression\Blend 4\ProjectTemplates\CSharp and copy Mvvm folder into C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp.

Then run from command line devenv /installvstemplates.
Start Visual Studio and have fun :)

среда, 17 октября 2012 г.

Super admin login on SQL Server 2012

Many of us saw 'sa' user in the logins sections
How to use it for login?
First of all let's set a password for 'sa'. Double click on 'sa' and set a password.
Then for enabling user for login go to the 'Status' page and switch Login option to 'Enabled'

Now you can login using 'sa' login name

вторник, 16 октября 2012 г.

How to set custom url instead of localhost

Assume that we're developing a web application using ASP.NET and IIS, we want to be able to go on site not by http://localhost/myfakesite domain, rather http://myfakesite.com
First of all open IIS, right click on the "Sites" on the left panel and create a new site. It's important to set the sorrect physical URL where site resides on a hard drive:

Next we can see that the bindings are already created
 
Don't forget to set right framework version of application pool


Finally go to C:\Windows\System32\drivers\etc and add into hosts file a line
127.0.0.1 www.myfakesite.com

Done!

воскресенье, 16 мая 2010 г.

1001-я причина, почему документацию лучше читать на английском языке (for russians)

Почитываю документацию по C#, с целью уменьшения пробелов в знаниях и некоторых тонкостях.
Фраза из MSDN:
It is not possible to modify an abstract class with the sealed (C# Reference) modifier because the two modifers have opposite meanings. The sealed modifier prevents a class from being inherited and the abstract modifier requires a class to be inherited.

Перевод из MSDN:
Абстрактный класс с модификатором sealed (Справочник по C#) изменить нельзя, поскольку sealed предотвращает наследование класса

Вопрос: что имел в виду переводчик в словах "изменить нельзя". Изменить количество свойств/полей/методов и т.д. нельзя? Можно.

Так вот, следует переводить так:
Использование модификатора sealed с классом, помеченным модификатором abstract, невозможно из-за того что данные модификаторы имеют противоположный смысл. Модификатор sealed запрещает наследование данного класса, а abstract требует, чтобы данный класс был обязательно унаследован.

По теме: безусловно, подобных смысловых ошибок достаточно много в переводах. Просто часто встречаются люди, которые считают, что раз они русские, то и должны читать документацию на русском, и как это можно, читая на английском, гораздо лучше понимать суть документации. Лишний повод задуматься.

Что касается класса, то как раз класс? объявленный как static, внутри сборки превращается в одновременно abstract и sealed. Кто не верит - ildasm в помощь.

    static class Point
    {
        static int m_x1;
        static int x1 { get { return m_x1; } }
        static int x2;
        static Point()
        {  }
    }
Выглядит следующим образом:

воскресенье, 28 февраля 2010 г.

Getting private fields values using reflection

We can get the private variables values inspite the ones are private. It is not a new idea, just for somebody who does not know

using System.Reflection;
class PrivateFieldsClass
{
    private int myPrivateField = 0;
}

class Program
{
    static void Main(string[] args)
    {
        PrivateFieldsClass myObject = new PrivateFieldsClass();
        FieldInfo fieldInfo = myObject.GetType().GetField("myPrivateField", BindingFlags.Instance BindingFlags.NonPublic);
        fieldInfo.SetValue(myObject, 42);

    }
}
But it works only if you know name of  a variable