2015-11-28 4 views
0

У меня есть ViewModel, который имеет два значения (Val1 & Val2), которые я использую для простого теста реальности в моей контактной форме.нулевые ссылки для случайных целых чисел

public class ContactFormViewModel 
{ 
    private Random Random { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string EmailAddress { get; set; } 
    public string Message { get; set; } 
    public int Val1 => Random.Next(1, 9); 
    public int Val2 => Random.Next(6, 19); 
} 

Я стараюсь использовать это во взгляде следующим образом.

@model TraderToolkit.WebUI2.Models.EmailViewModels.ContactFormViewModel 
//parts removed for brevity 
@using (Html.BeginForm()) 
{ 
<div class="container"> 
    <div class="form-group"> 
     <form role="form" action="" method="post" id="registrationForm"> 
     //parts removed for brevity 
      <label for="RealTest">What is <span id="val1">@Model.Val1</span> + <span id="val2">@Model.Val2</span>? </label> 
      <div class="input-group"> 
       <input type="text" class="form-control" name="RealTest" id="RealTest" required> 
       <span class="input-group-addon"><i class="glyphicon glyphicon-ok form-control-feedback"></i></span> 
      </div> 
     </div> 
     <button type="submit" class="btn btn-primary hidden" id="Send" name="Send" value="Send"></button> 
     </div> 
    </form> 
    </div> 
</div> 
} 

Ошибка при запуске сир и нажав на контактную форму, является пустой ссылкой исключение, а не указывает на экземпляр объекта. Это имеет смысл, поскольку класс никогда не «обновляется». Поскольку я новичок в MVC, возможно ли это в представлении? Если нет, как создать экземпляр этого класса, чтобы я мог получить доступ к Val1 и Val2 в представлении?

Решение благодаря HaukurHaf

обновленной модель

public class ContactFormViewModel 
{ 

    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string EmailAddress { get; set; } 
    public string Message { get; set; } 
    public int Val1 { get; set; } 
    public int Val2 { get; set; } 

    public ContactFormViewModel() 
    { 
     var rnd = new Random(); 
     Val1 = rnd.Next(1, 9); 
     Val2 = rnd.Next(6, 19); 
    } 
} 

ответ

0

Попробуйте определение конструктора по умолчанию и инициализировать случайные целые числа есть:

public class ContactFormViewModel 
{ 
    private Random Random { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string EmailAddress { get; set; } 
    public string Message { get; set; } 
    public int Val1 { get; set; } 
    public int Val2 { get; set; } 

    public ContactFormViewModel() 
    { 
     Val1 = Random.Next(1,9); 
     Val2 = Random.Next(6,19); 
    } 
} 
+0

Хотя действительное предложение, тот, который я буду включать, он не решает проблему, поскольку класс по-прежнему не обновляется, поэтому он не запускает конструктор. – dinotom

+0

Вы должны создать экземпляр модели в своем контроллере и передать ее в представление ... – HaukurHaf

+0

Представление для класса ContactIs из моей модели домена, как использовать его для использования ViewModel? – dinotom

Смежные вопросы