Blazor 5x - قسمت چهارم - مبانی Blazor - بخش 1 - Data Binding
نویسنده: وحید نصیری
تاریخ: ۱۳۹۹/۱۲/۱۰ ۱۵:۱۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
namespace BlazorServerSample.Models
{
public class BlazorRoom
{
public int Id { set; get; }
public string Name { set; get; }
public decimal Price { set; get; }
public bool IsActive { set; get; }
}
} @using BlazorServerSample.Models
@page "/"
<h2 class="bg-light border p-2">
First Room
</h2>
Room: @Room.Name
<br/>
Price: @Room.Price
@code
{
BlazorRoom Room = new BlazorRoom
{
Id = 1,
Name = "Room 1",
IsActive = true,
Price = 499
};
}
<input type="number" value="@Room.Price" />
<input type="number" @bind-value="@Room.Price" />
<input type="number" @bind-value="@Room.Price" @bind-value:event="oninput" />
<input type="checkbox" @bind-value="Room.IsActive" /> <br/> This room is @(Room.IsActive? "Active" : "Inactive").
<input type="checkbox" @bind-value="Room.IsActive" checked="@(Room.IsActive? "cheked" : null)" />
using System.Collections.Generic;
namespace BlazorServerSample.Models
{
public class BlazorRoom
{
// ...
public List<BlazorRoomProp> RoomProps { set; get; }
}
public class BlazorRoomProp
{
public int Id { set; get; }
public string Name { set; get; }
public string Value { set; get; }
}
} @code
{
BlazorRoom Room = new BlazorRoom
{
Id = 1,
Name = "Room 1",
IsActive = true,
Price = 499,
RoomProps = new List<BlazorRoomProp>
{
new BlazorRoomProp
{
Id = 1, Name = "Sq Ft", Value = "100"
},
new BlazorRoomProp
{
Id = 2, Name = "Occupancy", Value = "3"
}
}
};
} <select @bind="SelectedRoomPropValue">
@foreach (var prop in Room.RoomProps)
{
<option value="@prop.Value">@prop.Name</option>
}
</select>
<span>The value of the selected room prop is: @SelectedRoomPropValue</span>
@code
{
string SelectedRoomPropValue = "";
// ...
@code
{
string SelectedRoomPropValue = "";
List<BlazorRoom> Rooms = new List<BlazorRoom>();
protected override void OnInitialized()
{
base.OnInitialized();
Rooms.Add(new BlazorRoom
{
Id = 1,
Name = "Room 1",
IsActive = true,
Price = 499,
RoomProps = new List<BlazorRoomProp>
{
new BlazorRoomProp
{
Id = 1, Name = "Sq Ft", Value = "100"
},
new BlazorRoomProp
{
Id = 2, Name = "Occupancy", Value = "3"
}
}
});
Rooms.Add(new BlazorRoom
{
Id = 2,
Name = "Room 2",
IsActive = true,
Price = 399,
RoomProps = new List<BlazorRoomProp>
{
new BlazorRoomProp
{
Id = 1, Name = "Sq Ft", Value = "250"
},
new BlazorRoomProp
{
Id = 2, Name = "Occupancy", Value = "4"
}
}
});
}
}
<div class="border p-2 mt-3">
<h2 class="text-info">Rooms List</h2>
<table class="table table-dark">
@foreach(var room in Rooms)
{
<tr>
<td>
<input type="text" @bind-value="room.Name" @bind-value:event="oninput"/>
</td>
<td>
<input type="text" @bind-value="room.Price" @bind-value:event="oninput"/>
</td>
@foreach (var roomProp in room.RoomProps)
{
<td>
@roomProp.Name, @roomProp.Value
</td>
}
</tr>
}
</table>
@foreach(var room in Rooms)
{
<p>@room.Name's price is @room.Price.</p>
}
</div> namespace ProjectName.Folder1.Folder2
{
public class Login
{
}
} namespace ProjectName.Folder1.Folder2
{
public partial class Login
{
}
} namespace ProjectName.Folder1.Folder2
{
public partial class Login
{
[Inject]
public NavigationManager NavigationManager { set; get; }
// ...
}
} namespace ProjectName.Folder1.Folder2
{
public partial class Login : ComponentBase
{
[Inject]
public NavigationManager NavigationManager { set; get; }
// ...
}
} <InputText @bind-Value="employee.FirstName" />
[Parameter] public string Value { set; get; } [Parameter] public EventCallback<string> ValueChanged { get; set; } [Parameter] public Action<string> ValueChanged { get; set; } [Parameter] public Expression<Func<string>> ValueExpression { get; set; } private string _value;
[Parameter]
public string Value
{
get => _value;
set
{
var hasChanged = string.Equals(_value, value, StringComparison.Ordinal);
if (hasChanged)
{
_value = value;
if (ValueChanged.HasDelegate)
{
_ = ValueChanged.InvokeAsync(value);
}
}
}
} [Parameter] public string Value { set; get; }
[Parameter] public EventCallback<string> ValueChanged { get; set; } <input @bind:get="Value" @bind:set="ValueChanged" />
@code {
[Parameter]
public TValue Value { get; set; }
[Parameter]
public EventCallback<TValue> ValueChanged { get; set; }
} <MyInput @bind-Value="text" />
@code {
string text = "Type something great!";
}