我在PHP中创建了一个模型对象
class User {
public $title;
public function changeTitle($newTitle){
$this->title = $newTitle;
}
}
Run Code Online (Sandbox Code Playgroud)
如何通过分配对象来公开smarty中的User对象的属性?
我知道我能做到这一点
$smarty->assign('title', $user->title);
Run Code Online (Sandbox Code Playgroud)
但我的对象有超过20多个属性.
请指教.
编辑1
以下对我不起作用.
$smarty->assign('user', $user);
Run Code Online (Sandbox Code Playgroud)
要么
$smarty->register_object('user', $user);
Run Code Online (Sandbox Code Playgroud)
然后我试着 {$user->title}
一切都没有出来.
编辑2
我目前只想在smarty模板中输出对象的公共属性.对不起,如果我把任何一个与功能混淆.
谢谢.
使用asp.net-4.0我这样做了:
slideshow.aspx
<div class="wrapCarousel">
<div class="Carousel">
<% foreach(var image in Images) { %>
<div class="placeImages">
<img width="150px" height="150px" src="../Img/<%=image.TnImg%>" alt="<%=image.Name%>" />
<div class="imageText">
<%=image.Name%>
</div>
</div>
<% } %>
</div>
Run Code Online (Sandbox Code Playgroud)
然后像这个slideshow.aspx.cs中的图像在后面的代码中:
public class Image
{
public string TnImg { get; set; }
public string Name { get; set; }
public string City { get; set; }
public string RefPlace { get; set; }
public string RefInfo { get; set; }
public string RefInfoDynamic { get; set; }
public Image(string TnImg, …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个编辑视图,我有一个文本框和DropDownListFor.我已经找到了填充DDLF的方法,并且渲染和发布的值是正确的,但我似乎无法让模型正确更新.
我想要更新的对象是从LINQtoSQL生成的,在数据库中它有外键列.在LINQtoSQL类中导致"包含"关系.我可以访问代表DB中列的ID属性,以及它所代表的对象.
zupanija = new Zupanija(); //object that needs to be updated
zupanija.Drzava; //object that i want to change to make the update
zupanija.DrzavaID; //Property linked to object that should change
Run Code Online (Sandbox Code Playgroud)
我想出更新的唯一方法是从DDLF获取值并使用它来获取我想要更改的对象,如下所示:
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
var zupanija = repo.ZupanijaById(id);
var drzava = new repoDrzava().DrzavaById(Convert.ToInt32(collection["Zupanija.DrzavaID"]));
zupanija.Drzava = drzava;
}
Run Code Online (Sandbox Code Playgroud)
此外,当我尝试更新这样的ID字段时,我得到以下错误:
zupanija.DrzavaID = Convert.ToInt32(collection["Zupanija.DrzavaID"]);
Run Code Online (Sandbox Code Playgroud)
错误:抛出新的System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
在我看来,这是非常糟糕的方式,我试图让UpdateModel工作.
我正在关注ASP.NET MVC的这个教程,特别是它声明提供"MovieType"Razor View 的String 如下:@Html.DropDownList("MovieType")将提供DropDownList的键以查找ViewBag类型的属性IEnumerable<SelectListItem>.
这很好用.
但是,我无法获取用户在带有[HttpPost]属性的方法上选择的值.
这是我的代码和迄今为止我尝试过的内容.
调节器
public class ProductController : Controller
{
private readonly ProductRepository repository = new ProductRepository();
// Get: /Product/Create
public ActionResult Create()
{
var categories = repository.FindAllCategories(false);
var categorySelectListItems = from cat in categories
select new SelectListItem()
{
Text = cat.CategoryName,
Value = cat.Id.ToString()
};
ViewBag.ListItems = categorySelectListItems;
return View();
}
[HttpPost]
public ActionResult Create(Product product)
{
/** …Run Code Online (Sandbox Code Playgroud) asp.net-mvc viewmodel html.dropdownlistfor razor asp.net-mvc-4
我刚刚开始搞乱Knockout JS,我有以下的观点(例子).
我有一个游客列表,这个列表有CRUD方法 - 一切都很棒.现在,当我点击一个游客时,将会显示一个更详细的描述 - 这是一个新的AJAX调用服务器的信息.
我的问题是,我应该有一个包含我的1个主视图模型TouristsViewModel和TouristsInfoViewModel-这意味着TouristsViewModel要与主为了改变耦合TouristsInfoViewModel,或者我应该TouristsViewModel实例化TouristsInfoViewModel,并调用ko.applyBindings?
我看过Knockout-postbox,但我想避免引入过多的第三方插件.
总结一下:在能够在它们之间共享数据的同时,分离视图和视图模型的一般方法是什么?
我有一个UdpClient,在我的MainWindow上触发了一个DataRecevied事件:
public partial class MainWindow : Window
{
public static YakUdpClient ClientConnection = new YakUdpClient();
public ClientData;
public MainWindow()
{
InitializeComponent();
Loaded += OnLoaded;
}
private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
ClientData = new ClientData();
ClientConnection.OnDataReceived += ClientConnectionOnDataReceived;
}
private void ClientConnectionOnDataReceived(object sender, MessageEventArgs messageEventArgs)
{
ClientData.Users = messageEvenArgs.ConnectedUsers;
}
}
Run Code Online (Sandbox Code Playgroud)
我的ClientData和User类如下所示:
public class ClientData
{
public List<User> Users {get;set;)
}
public class User
{
public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
在我的MainWindow上,我有一个名为UserControl的调用UserListViewViewModelUserListViewModel
ViewModel看起来如下:
public class UserListViewModel: BindableBase …Run Code Online (Sandbox Code Playgroud) 我正在研究Android架构组件,我有点困惑.在示例中,他们使用存储库并声明ViewModel观察到存储库的数据源内的更改.我不明白数据源中的更改是如何推送到ViewModel的,因为我看不到ViewModel中的任何代码将它们订阅到存储库.类似地,片段观察ViewModel的LiveData,但它们实际上订阅了LiveData:
// Observe product data
model.getObservableProduct().observe(this, new Observer<ProductEntity>() {
@Override
public void onChanged(@Nullable ProductEntity productEntity) {
model.setProduct(productEntity);
}
});
Run Code Online (Sandbox Code Playgroud)
我在ViewModels中看不到任何类型的订阅来观察存储库.我错过了什么吗?
android mvvm viewmodel android-livedata android-architecture-components
我有 3 个主菜单实体。和子菜单。我创建了菜单视图模型。
我的实体:
主菜单.cs:
public UstMenuler()
{
AltMenuler = new HashSet<AltMenuler>();
}
public int ID { get; set; }
public string Name { get; set; }
public bool AktifMi { get; set; }
public int YetkiID { get; set; }
public string ControllerName { get; set; }
public string ActionName { get; set; }
public virtual Yetkilendirme Yetkilendirme { get; set; }
public virtual ICollection<AltMenuler> AltMenuler { get; set; }
Run Code Online (Sandbox Code Playgroud)
子菜单.cs:
public partial class AltMenuler
{
public AltMenuler()
{ …Run Code Online (Sandbox Code Playgroud) 我试图使用LiveData和viewmodel从房间中获取自定义对象数据的列表。使用Livedata的getValue()方法时,返回null,但获取列表直接显示实际数据。如何在Viewmodel类中使用LiveData获得Period类的列表。
实体类
@Entity
public class Period {
@PrimaryKey
@NonNull
String header;
@TypeConverters(WritterConverter.class)
ArrayList<Writter> writters;
public Period(String header, ArrayList<Writter> writters) {
this.header = header;
this.writters = writters;
}
public String getHeader() {
return header;
}
public ArrayList<Writter> getWritters() {
return writters;
}
}
@Entity
public class Writter {
String birth;
String death;
String name;
ArrayList<String> novels;
public Writter(){}
public Writter(String birth, String death, String name, ArrayList<String> novels) {
this.birth = birth;
this.death = death;
this.name = name;
this.novels = novels;
} …Run Code Online (Sandbox Code Playgroud) 我看过很多教程,但并没有真正让自己正确理解如何处理 MVVM 中的某些情况。
假设有一个从DAO使用的a 获取数据的存储库Room
class Repository(){
fun getItems() = itemsDAO.getItems()
}
Run Code Online (Sandbox Code Playgroud)
查询 Repository 的 ViewModel
class FragmentViewModel:ViewModel(){
val items = repository.getItems()
fun updateItem(Item item){
repository.updateImte(itemm)
}
}
Run Code Online (Sandbox Code Playgroud)
还有一个片段
class MyFragment:Fragment(){
//onViewCreated
viewModel.items.observe(...){
//if result, update the views
}
buttonUpdateItem.setOnClickListener{
viewModel.updateItem(Item item)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我从教程中理解的方法。基本上我有一些事情需要澄清,我想寻求你的帮助。
一种。鉴于ViewModel如果用户旋转设备并重新创建片段的这种实现,这是否意味着observe将在添加时再次查询数据库?我正在考虑 ViewModel 的更新版本,例如
class FragmentViewModel:ViewModel(){
private final var itemsObservable;
init {
itemsObservable = repository.getItems()
}
fun items(){
return itemsObservable
}
fun updateItem(Item item){
repository.updateImte(item)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我是对的,这应该允许从 db …
viewmodel ×10
android ×3
mvvm ×3
asp.net-mvc ×2
c# ×2
android-architecture-components ×1
android-room ×1
controller ×1
dao ×1
dry ×1
knockout.js ×1
php ×1
prism ×1
razor ×1
smarty ×1
updatemodel ×1
view ×1
wpf ×1